Διαφορά μεταξύ σταθερού και μόνο

Είναι σημαντικό να κατανοήσετε τις έννοιες του προγραμματισμού C # πριν προχωρήσετε στην εφαρμογή του κώδικα. Πριν προχωρήσουμε στις διαφορές μεταξύ const και μόνο, ας κατανοήσουμε πρώτα τις λέξεις-κλειδιά και πώς χρησιμοποιούνται σε ένα πρόγραμμα. Και οι δύο είναι οι πιο κοινές λέξεις-κλειδιά που χρησιμοποιούνται στον προγραμματισμό C # και βασικά για τον ίδιο σκοπό. Ωστόσο, και οι δύο λέξεις-κλειδιά είναι πολύ διαφορετικές μεταξύ τους. Το Const είναι μια δεσμευμένη λέξη που χρησιμοποιείται για την αναπαράσταση σταθερών τιμών και καθορίζει ότι μια τιμή δεν μπορεί να τροποποιηθεί μετά το χρόνο μεταγλώττισης, ενώ το readonly είναι ένας τροποποιητής που μπορεί να χρησιμοποιηθεί σε πεδία και η τιμή του οποίου μπορεί να αλλάξει κατά τη διάρκεια του χρόνου εκτέλεσης. Ας ρίξουμε μια ματιά σε μερικές από τις βασικές διαφορές μεταξύ const και μόνο.



Τι είναι το Const;

Το Const αναφέρεται σε μια σταθερή μεταβλητή και η τιμή της οποίας πρέπει να εκχωρηθεί μόνο μία φορά, κατά τη δήλωση. Όταν η λέξη-κλειδί const χρησιμοποιείται κατά τη διάρκεια μιας δήλωσης, γίνεται σταθερή και σημαίνει ότι η τιμή παραμένει σταθερή και δεν μπορεί να αλλάξει σε όλο το πρόγραμμα. Πρόκειται περισσότερο για μια δεσμευμένη λέξη που καθορίζει ότι μια τιμή δεν πρέπει να τροποποιηθεί μετά το χρόνο μεταγλώττισης. Ένα const είναι σιωπηρά στατικό από προεπιλογή, επομένως μπορεί να κληθεί με το όνομα της κλάσης χρησιμοποιώντας το 'Classname.VariableName'. Οι σταθερές τιμές καλούνται επίσης ως κυριολεκτικά. Μπορεί να είναι οποιουδήποτε βασικού τύπου δεδομένων, όπως ακέραιος const, floating const, ή string string.



Τι είναι το ReadOnly;

Η λέξη-κλειδί Readonly είναι ένας τροποποιητής που μπορεί να χρησιμοποιηθεί μόνο σε πεδία αλλά όχι σε τοπικές μεταβλητές. Ένα πεδίο ανάγνωσης μπορεί να αρχικοποιηθεί είτε κατά τη στιγμή της δήλωσης είτε εντός ενός κατασκευαστή στην ίδια τάξη, οπότε οι τιμές μπορεί να είναι διαφορετικές για διαφορετικές εκτελέσεις του προγράμματος ανάλογα με τον κατασκευαστή που χρησιμοποιείται. Η μόνο λέξη-κλειδί καθορίζει ότι μια μεταβλητή παρουσίας ενός αντικειμένου δεν είναι τροποποιήσιμη και οποιαδήποτε προσπάθεια τροποποίησής της μετά τη δήλωση οδηγεί σε σφάλμα σύνταξης. Η μεταβλητή δεν γίνεται μη τροποποιήσιμη παρά μόνο μετά την εκτέλεση. Οι μεταβλητές γίνονται μόνο για να σταματήσουν να καλούν τον κώδικα από την τυχαία τροποποίησή του μετά την κατασκευή του.



Διαφορά μεταξύ Constant και ReadOnly

  1. Βασικός

Η σταθερή (const) λέξη-κλειδί δεν είναι τίποτα άλλο από αμετάβλητες μεταβλητές η αξία των οποίων μπορεί να αρχικοποιηθεί μόνο κατά το χρόνο μεταγλώττισης. Αυτές οι σταθερές τιμές καλούνται επίσης ως κυριολεκτικά. Απλώς μας επιτρέπει να καθορίσουμε αν μια μεταβλητή είναι τροποποιήσιμη ή όχι. Με απλά λόγια, οι σταθερές είναι σιωπηρά στατικές και πρέπει να αρχικοποιηθούν πριν να χρησιμοποιηθούν στο πρόγραμμα. Η λέξη-κλειδί Readonly, από την άλλη πλευρά, είναι ένας τροποποιητής που μπορεί να χρησιμοποιηθεί σε πεδία και η αξία του οποίου μπορεί να αλλάξει κατά τη διάρκεια του χρόνου εκτέλεσης. Αποτρέπει την αλλαγή πεδίων και οι τιμές των οποίων μπορούν να ρυθμιστούν μέσω μεταβλητών αναφοράς.

  1. Αρχικοποίηση

Ένα const είναι στατικό από προεπιλογή και οι τιμές για τις οποίες πρέπει να εκχωρηθούν κατά τη στιγμή της μεταβλητής δήλωσης που σημαίνει ότι οι τιμές εκχωρούνται μόνο κατά το χρόνο μεταγλώττισης. Μια σταθερά δηλώνεται χρησιμοποιώντας τη λέξη-κλειδί 'const'. Η προετοιμασία ενός σταθερού πεδίου πρέπει να είναι μια σταθερή έκφραση και μπορεί να μην τροποποιηθεί. Με απλά λόγια, ένα const είναι μια σταθερά χρόνου μεταγλώττισης. Ένα πεδίο ανάγνωσης, από την άλλη πλευρά, μπορεί να αρχικοποιηθεί μόνο σε επίπεδο τάξης και όχι μέσα στη μέθοδο και το πεδίο δεν μπορεί να τροποποιηθεί μετά την αρχικοποίηση. Με άλλα λόγια, οι απλές μεταβλητές μπορούν να αρχικοποιηθούν κατά τη στιγμή της δήλωσης ή μέσα σε έναν κατασκευαστή.

  1. Κατανομή μνήμης

Μια τιμή const τοποθετείται απευθείας στον κώδικα καθώς ενεργεί ως αντικατάσταση χρόνου μεταγλώττισης. Ο μεταγλωττιστής τοποθετεί τη σταθερή τιμή στα μεταδεδομένα συναρμολόγησης που ορίζει τη σταθερά και ενσωματώνει την τιμή στον ίδιο τον κώδικα IL μετά την εκκίνηση, οπότε δεν απαιτείται μνήμη για σταθερές στο χρόνο εκτέλεσης για εκχώρηση. Η τιμή ανάγνωσης δεν είναι σταθερή και αποθηκεύεται στον φορτωτή συγκεντρώνει τη μνήμη για την οποία δεν μπορεί να εκχωρηθεί έως ότου φορτωθεί ο τύπος της. Τα πεδία ανάγνωσης αποθηκεύονται στη δυναμική μνήμη, έτσι οι τιμές μπορούν να ληφθούν μόνο κατά το χρόνο εκτέλεσης.



  1. Δυαδική έκδοση

Αν και και οι δύο λέξεις-κλειδιά χρησιμοποιούνται σχεδόν για τον ίδιο σκοπό, έχουν διαφορετική σημασιολογία δυαδικής έκδοσης. Όταν μια παράσταση αναφέρεται σε μια σταθερά, ο μεταγλωττιστής ενσωματώνει την τιμή στο χρόνο μεταγλώττισης. Επομένως, εάν η τιμή χρησιμοποιείται σε διαφορετικό συγκρότημα, το αρχικό συγκρότημα πρέπει να ενημερωθεί και η τιμή πρέπει να αλλάξει. Οι αλλαγές στη συνέλευση δεν αντικατοπτρίζονται έως ότου επανασυγκροτηθούν. Η τιμή δεν λαμβάνεται μέχρι το χρόνο εκτέλεσης, όταν μια έκφραση αναφέρεται σε ένα αναγνωστικό πεδίο. Εάν η τιμή αλλάξει σε διαφορετικό συγκρότημα, οι αλλαγές αντικατοπτρίζονται στο συγκρότημα μόλις φορτωθεί χωρίς να χρειάζεται να μεταγλωττιστεί ξανά.

Const εναντίον Readonly: Διάγραμμα σύγκρισης

Περίληψη των Const εναντίον Readonly

Και οι δύο λέξεις-κλειδιά χρησιμοποιούνται για το ίδιο πράγμα που είναι η δήλωση μέλους, έτσι ώστε οι τιμές να μην μπορούν να αλλάξουν σε όλο το πρόγραμμα. Ωστόσο, η λέξη-κλειδί const είναι πολύ διαφορετική από την λέξη-κλειδί μόνο. Το Const είναι μια σταθερή μεταβλητή της οποίας η τιμή πρέπει να αρχικοποιηθεί στο χρόνο μεταγλώττισης, ενώ ένα πεδίο ανάγνωσης μπορεί να αρχικοποιηθεί μόνο σε επίπεδο τάξης, είτε κατά τη στιγμή της δήλωσης είτε εντός του κατασκευαστή. Το Const είναι μια σταθερά χρόνου μεταγλώττισης, ενώ τα πεδία για ανάγνωση είναι μόνο για ανάγνωση. Οι μεταβλητές σταθερότητας μπορούν να προσπελαστούν χρησιμοποιώντας το 'Classname.VariableName' ενώ οι μεταβλητές ανάγνωσης μπορούν να προσπελαστούν χρησιμοποιώντας το 'InstanceName.VariableName'. Επιπλέον, οι μεταβλητές const μπορούν να δηλωθούν σε μεθόδους, ενώ τα πεδία για ανάγνωση δεν μπορούν να δηλωθούν σε μεθόδους.

Δημοφιλείς Αναρτήσεις

Hans von Seeckt: Η Πολιτική Κληρονομιά ενός Μη Πολιτικού Στρατιώτη

«Το Ράιχσχερ θα βαδίζει μαζί σου αν ακολουθήσεις τον γερμανικό δρόμο». Αυτά ήταν τα λόγια του στρατηγού Hans von Seeckt στον Gustav Stresemann, καγκελάριο του

Διαφορά μεταξύ κοντινής όρασης και μακράς όρασης

Εισαγωγή Το ανθρώπινο μάτι είναι μια σφαίρα της οποίας οι δομές βοηθούν στη μετάφραση του φωτός που αναπηδά από αντικείμενα και αναγνωρίζει το αντικείμενο. Ο κερατοειδής, ο φακός και ο αμφιβληστροειδής είναι το

Διαφορά μεταξύ παραβίασης σύμβασης και παράβασης εγγύησης

Υποθετικά, οι συμφωνίες που συνάπτονται θα ωφελήσουν τα μέρη που εμπλέκονται χωρίς διαφωνίες και και τα δύο μέρη θα έχουν τα επιθυμητά αποτελέσματα. Στην πραγματική ζωή, ωστόσο,

Διαφορά μεταξύ αντισηπτικού και απολυμαντικού

Αντισηπτικά έναντι απολυμαντικών Τα αντισηπτικά και τα απολυμαντικά μπορεί να φαίνεται να είναι τα ίδια, ωστόσο υπάρχει μια μεγάλη διαφορά μεταξύ των δύο. Τα αντισηπτικά χρησιμοποιούνται σε

Διαφορά μεταξύ γκρι και γκρι

Γκρι vs Γκρι Το χρώμα, γκρι, έχει δύο ορθογραφίες αλλά σημαίνουν ακριβώς το ίδιο. Δεν είναι σαφές πότε έγινε διαφορετική η ορθογραφία ή ποια ήταν η πρώτη ορθογραφία

Διαφορά μεταξύ εβδομάδας και αδύναμου

Ποια είναι η διαφορά μεταξύ «εβδομάδας» και «αδύναμου»; Οι δύο λέξεις προφέρονται ακριβώς το ίδιο και διαφέρουν μόνο με ένα γράμμα στην ορθογραφία. Ωστόσο, οι έννοιες τους