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

Στατικά μαθήματα και στατικά μέλη της τάξης στο C # εξήγησαν

Η στατική λέξη-κλειδί στη γλώσσα προγραμματισμού C # σας επιτρέπει να ορίσετε στατικές τάξεις και στατικά μέλη.

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

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

Πότε να χρησιμοποιήσετε μια στατική τάξη στο C #

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

δημόσια στατική τάξη FileLogger

    {

δημόσιο στατικό άκυρο αρχείο καταγραφής (μήνυμα συμβολοσειράς)

        {

// Μέθοδος καταγραφής δεδομένων σε αρχείο κειμένου

        }

    }

Πότε να χρησιμοποιείτε στατικές μεθόδους στο C #

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

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

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

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μοιάζει μια στατική μέθοδος.

δημόσιο στατικό άκυρο αρχείο καταγραφής (μήνυμα συμβολοσειράς)

        {

string filePath = @ "F: \ Log.txt";

χρησιμοποιώντας (StreamWriter streamWriter = νέο StreamWriter (filePath, true))

            {

streamWriter.WriteLine (μήνυμα);

streamWriter.Close ();

            }

        }

Πώς να χρησιμοποιήσετε στατικά μέλη μιας τάξης στο C #

Το CLR χωρίζει τη μνήμη του συστήματος σε τρεις διαφορετικές περιοχές: τη στοίβα, το σωρό και το σωρό υψηλής συχνότητας. Δεδομένου ότι στατικά αντικείμενα μπορούν να έχουν άμεση πρόσβαση χωρίς να δημιουργούν εμφανίσεις της κλάσης, πρέπει να υπάρχουν στη μνήμη καθ 'όλη τη διάρκεια ζωής της εφαρμογής. δεν χρειάζεται να συλλέγονται σκουπίδια. Επομένως, τα στατικά αντικείμενα αποθηκεύονται στο σωρό υψηλής συχνότητας. Συνήθως έχετε έναν σωρό υψηλής συχνότητας για κάθε τομέα εφαρμογής.

Ας ρίξουμε μια ματιά στα στατικά μέλη μιας τάξης. Και πάλι, ένα στατικό αντικείμενο είναι αυτό που παραμένει στη μνήμη καθ 'όλη τη διάρκεια της εκτέλεσης της εφαρμογής. Επεκτείνοντας το παραπάνω παράδειγμα καταγραφής, η ακόλουθη λίστα κώδικα δείχνει πώς θα μοιάζει μια κλάση FileLogger με στατικά μέλη.

δημόσια στατική τάξη FileLogger

    {

ιδιωτικό στατικό αντικείμενο μόνο για ανάγνωση lockObject = νέο αντικείμενο ();

δημόσια στατική συμβολοσειρά FilePath

        {

παίρνω; σειρά;

        }

δημόσιο στατικό άκυρο αρχείο καταγραφής (μήνυμα συμβολοσειράς)

        {

κλειδαριά (lockObject)

            {

εάν (! string.IsNullOrEmpty (FilePath))

χρησιμοποιώντας (StreamWriter streamWriter = νέο StreamWriter (FilePath, true))

                {

streamWriter.WriteLine (μήνυμα);

streamWriter.Close ();

                }

            }

        }

    }

Σημειώστε τη χρήση της στατικής ιδιότητας που ονομάζεται Διαδρομή αρχείου. Για να διασφαλιστεί η ασφάλεια του σπειρώματος, το κλειδαριά έχει χρησιμοποιηθεί λέξη-κλειδί. Έγινε έλεγχος στο εσωτερικό του Κούτσουρο() μέθοδος για να επαληθεύσετε ότι η τιμή του Διαδρομή αρχείου η ιδιότητα δεν είναι κενή και δεν είναι κενή.

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