Προγραμματισμός

Πώς να χρησιμοποιήσετε const, μόνο για ανάγνωση και στατικό σε C #

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

Για να εργαστείτε με τα παραδείγματα κώδικα που παρέχονται σε αυτό το άρθρο, θα πρέπει να έχετε εγκαταστήσει το Visual Studio 2019 στο σύστημά σας. Εάν δεν έχετε ήδη αντίγραφο, μπορείτε να κατεβάσετε το Visual Studio 2019 εδώ.

Δημιουργήστε ένα έργο εφαρμογής κονσόλας στο Visual Studio 2019

Πρώτα απ 'όλα, ας δημιουργήσουμε ένα έργο εφαρμογής .NET Core κονσόλας στο Visual Studio. Υποθέτοντας ότι το Visual Studio 2019 είναι εγκατεστημένο στο σύστημά σας, ακολουθήστε τα βήματα που περιγράφονται παρακάτω για να δημιουργήσετε ένα νέο έργο εφαρμογής .NET Core κονσόλας στο Visual Studio.

  1. Εκκινήστε το Visual Studio IDE.
  2. Κάντε κλικ στο "Δημιουργία νέου έργου".
  3. Στο παράθυρο "Δημιουργία νέου έργου", επιλέξτε "Εφαρμογή κονσόλας (.NET Core)" από τη λίστα των προτύπων που εμφανίζονται.
  4. Κάντε κλικ στο Επόμενο.
  5. Στο παράθυρο "Διαμόρφωση του νέου έργου" που εμφανίζεται στη συνέχεια, καθορίστε το όνομα και την τοποθεσία για το νέο έργο.
  6. Κάντε κλικ στο Δημιουργία.

Αυτό θα δημιουργήσει ένα νέο έργο εφαρμογής .NET Core κονσόλας στο Visual Studio 2019. Θα χρησιμοποιήσουμε αυτό το έργο για να δείξουμε τη χρήση των σταθερών, μόνοι και στατικών λέξεων-κλειδιών στο C # στις επόμενες ενότητες αυτού του άρθρου.

Χρησιμοποιήστε τη λέξη-κλειδί const στο C #

Η λέξη-κλειδί const (read: stable) στο C # χρησιμοποιείται για τον ορισμό μιας σταθερής μεταβλητής, δηλαδή μιας μεταβλητής της οποίας η τιμή δεν θα αλλάξει κατά τη διάρκεια ζωής του προγράμματος. Ως εκ τούτου, είναι επιτακτική ανάγκη να εκχωρήσετε μια τιμή σε μια σταθερή μεταβλητή κατά τη στιγμή της δήλωσής της.

Αυτή η τιμή μιας σταθερής μεταβλητής είναι επίσης γνωστή ως τιμή «χρόνος μεταγλώττισης». Οι μεταβλητές που δηλώνονται χρησιμοποιώντας τη λέξη-κλειδί const είναι επίσης γνωστές ως σταθερές χρόνου μεταγλώττισης. Θα πρέπει να σημειωθεί ότι μια σταθερή μεταβλητή είναι αμετάβλητη, δηλαδή, η τιμή που αποδίδεται σε μια σταθερή μεταβλητή δεν μπορεί να αλλάξει αργότερα.

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να ορίσετε μια σταθερά χρόνου μεταγλώττισης χρησιμοποιώντας τη λέξη-κλειδί const στο C #.

const string connectionString = "Προσδιορίστε τη συμβολοσειρά σύνδεσης βάσης δεδομένων εδώ.";

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

Εξετάστε την ακόλουθη τάξη με το όνομα Συγγραφέας. Θα δώσουμε στην τάξη του συγγραφέα μόνο μερικές ιδιότητες για να την κάνουμε απλή.

δημόσια τάξη Συγγραφέας

    {

δημόσιο int Id {get; σειρά; }

δημόσια συμβολοσειρά FirstName {get; σειρά; }

δημόσια συμβολοσειρά LastName {get; σειρά; }

δημόσια συμβολοσειρά Διεύθυνση {get; σειρά; }

    }

Τώρα, αν προσπαθήσετε να δημιουργήσετε ένα σταθερό αντικείμενο της κλάσης Συγγραφέα χρησιμοποιώντας τη λέξη-κλειδί const, θα παρατηρήσετε το σφάλμα σύνταξης που φαίνεται στην Εικόνα 1 παρακάτω.

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

Χρησιμοποιήστε την μόνο λέξη-κλειδί στο C #

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

Ας το καταλάβουμε με ένα παράδειγμα. Σκεφτείτε την ακόλουθη τάξη με το όνομα DbManager.

δημόσια τάξη DbManager

    {

δημόσια συμβολοσειρά readonly stringString =

"Καθορίστε τη συμβολοσειρά σύνδεσης βάσης δεδομένων εδώ.";

δημόσιο DbManager ()

        {

connectionString = "Μπορείτε να εκχωρήσετε ξανά μια τιμή εδώ.";

        }

δημόσιο κενό ReAssign ()

        {

connectionString = "Αυτό δεν επιτρέπεται";

        }

    }

Ο παραπάνω κώδικας δεν θα μεταγλωττιστεί και θα εμφανιστεί το σφάλμα που φαίνεται στο Σχήμα 2.

Χρησιμοποιήστε τη στατική λέξη-κλειδί στο C #

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

Εξετάστε την ακόλουθη κλάση με το όνομα Utility που περιέχει μια στατική μέθοδο.

δημόσια τάξη Utility

    {

δημόσιο στατικό κενό SomeMethod ()

        {

// Γράψτε τον κωδικό σας εδώ

        }

    }

Δεν μπορείτε να καλέσετε τη μέθοδο Κάποια μέθοδος () χρησιμοποιώντας μια παρουσία της κλάσης Utility. Αντίθετα, πρέπει να καλέσετε αυτήν τη μέθοδο χρησιμοποιώντας την ακόλουθη σύνταξη.

Utility.SomeMethod ();

Ο ίδιος κανόνας ισχύει για μια στατική μεταβλητή ή ένα στατικό αντικείμενο. Μπορείτε να αναφέρετε ένα στατικό μέλος μιας τάξης μόνο χρησιμοποιώντας τη σύνταξη που φαίνεται παρακάτω.

Ονομα τάξης.Μέλος;

Ή

Ονομα τάξης.Μέλος();

Ένας κατασκευαστής μιας τάξης μπορεί να είναι στατικός. Ένας στατικός κατασκευαστής μιας κλάσης χρησιμοποιείται για την προετοιμασία των στατικών μελών της τάξης. Ωστόσο, ένας στατικός κατασκευαστής μιας κλάσης δεν μπορεί να δεχτεί παραμέτρους.

Ένας κανόνας για const, μόνο για ανάγνωση και στατικό

Ακολουθεί ο κανόνας του αντίχειρα που μπορείτε να ακολουθήσετε όταν εργάζεστε με τις λέξεις-κλειδιά const, readonly και static. Χρησιμοποιήστε τη λέξη-κλειδί const όταν η τιμή που περιέχεται σε μια μεταβλητή δεν θα αλλάξει ποτέ κατά τη διάρκεια ζωής της εφαρμογής. Χρησιμοποιήστε τη λέξη-κλειδί μόνο για ανάγνωση όταν δεν είστε βέβαιοι εάν η τιμή μιας μεταβλητής ενός αντικειμένου πρέπει να αλλάξει, αλλά θέλετε να αποτρέψετε την αλλαγή της τιμής από άλλες τάξεις. Χρησιμοποιήστε τη στατική λέξη-κλειδί όταν θέλετε το μέλος μιας τάξης να ανήκει στον τύπο και όχι στην παρουσία του τύπου.

Πώς να κάνετε περισσότερα στο C #:

  • Πώς να χρησιμοποιήσετε σχολιασμούς δεδομένων στο C #
  • Πώς να εργαστείτε με GUID στο C # 8
  • Πότε να χρησιμοποιήσετε μια αφηρημένη τάξη εναντίον διεπαφής στο C #
  • Πώς να εργαστείτε με το AutoMapper στο C #
  • Πώς να χρησιμοποιήσετε τις εκφράσεις λάμδα στο C #
  • Πώς να συνεργαστείτε με τους αντιπροσώπους Action, Func και Predicate στο C #
  • Πώς να συνεργαστείτε με εκπροσώπους στο C #
  • Πώς να εφαρμόσετε έναν απλό καταγραφέα στο C #
  • Πώς να εργαστείτε με χαρακτηριστικά στο C #
  • Πώς να εργαστείτε με το log4net στο C #
  • Πώς να εφαρμόσετε το μοτίβο σχεδίασης αποθετηρίου στο C #
  • Πώς να εργαστείτε με προβληματισμό στο C #
  • Πώς να εργαστείτε με το σύστημα παρακολούθησης αρχείων στο C #
  • Πώς να εκτελέσετε τεμπέλης αρχικοποίηση στο C #
  • Πώς να εργαστείτε με το MSMQ στο C #
  • Πώς να εργαστείτε με μεθόδους επέκτασης στο C #
  • Πώς να μας εκφράσεις λάμδα στο C #
  • Πότε να χρησιμοποιήσετε την ευμετάβλητη λέξη-κλειδί στο C #
  • Πώς να χρησιμοποιήσετε τη λέξη-κλειδί απόδοσης στο C #
  • Πώς να εφαρμόσετε τον πολυμορφισμό στο C #
  • Πώς να δημιουργήσετε τον δικό σας προγραμματιστή εργασιών στο C #
  • Πώς να εργαστείτε με το RabbitMQ στο C #
  • Πώς να εργαστείτε με μια πλειάδα στο C #
  • Εξερεύνηση εικονικών και αφηρημένων μεθόδων στο C #
  • Πώς να χρησιμοποιήσετε το Dapper ORM στο C #
  • Πώς να χρησιμοποιήσετε το μοτίβο σχεδιασμού flyweight στο C #