Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 19482|Απάντηση: 2

[Πηγή] Το C# 8.0 μπορεί να είναι ένας μηδενικός τύπος αναφοράς

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2022-3-26 16:40:21 | | | |
Πριν από το C# 8.0, όλοι οι τύποι αναφοράς μπορούσαν να είναι μηδενικοί. Οι μηδενικοί τύποι αναφοράς αναφέρονται σε ένα σύνολο χαρακτηριστικών που εισάγονται στο C# 8.0 που μπορούν να χρησιμοποιηθούν γιαΕλαχιστοποιήστε την πιθανότητα ο κώδικάς σας να προκαλέσει ρίψεις χρόνου εκτέλεσης。 Οι τύποι αναφοράς με δυνατότητα null περιλαμβάνουν τρία χαρακτηριστικά που βοηθούν στην αποφυγή αυτών των εξαιρέσεων, συμπεριλαμβανομένης της δυνατότητας ρητής επισήμανσης τύπων αναφοράς ως μηδενήριων:

  • Βελτιστοποιημένη ανάλυση στατικής ροής για να προσδιοριστεί εάν μια μεταβλητή είναι μηδενική πριν από την κατάργηση της αναφοράς της.
  • Χαρακτηριστικά που χρησιμοποιούνται για τον σχολιασμό του API, έτσι ώστε η Ανάλυση ροής να προσδιορίζει τη μηδενική κατάσταση.
  • Σχολιασμοί μεταβλητών που μπορούν να χρησιμοποιήσουν οι προγραμματιστές για να δηλώσουν ρητά την αναμενόμενη μηδενική κατάσταση μιας μεταβλητής.


Η ανάλυση μηδενικής κατάστασης και οι σχολιασμοί μεταβλητών είναι απενεργοποιημένοι από προεπιλογή για υπάρχοντα έργα, πράγμα που σημαίνει ότι όλοι οι τύποι αναφοράς εξακολουθούν να είναι μηδενισμένοι. Ξεκινώντας με το .NET 6, αυτές οι δυνατότητες είναι ενεργοποιημένες από προεπιλογή για νέα έργα.

Τεκμηρίωση:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Τι πρέπει να κάνει ένας τύπος αναφοράς που μπορεί να είναι nullΕλαχιστοποιήστε την πιθανότητα η εφαρμογή σας να ρίξει ένα System.NullReferenceException κατά το χρόνο εκτέλεσης

Σε ένα έργο που αναπτύσσω με το .NET 6, δημιουργώ μια ιδιότητα Name για μια νέα ιδιότητα που μου ζητά την ακόλουθη προειδοποίηση:

Κατά την έξοδο από τον κατασκευαστή, η μη μηδενική ιδιότητα "Όνομα" πρέπει να περιέχει μια μη μηδενική τιμή. Εξετάστε το ενδεχόμενο να δηλώσετε το ακίνητο ως άκυρο.


Αν και είναι προειδοποίηση, είναι πολύ ενοχλητικό! Πώς να διορθώσετε αυτήν την προειδοποίηση; Η προεπιλεγμένη τιμή για την εκχώρηση είναι μια κενή συμβολοσειρά και ο κωδικός είναι ο εξής:

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

Όταν χρησιμοποιείτε μια τοπική μεταβλητή,Ο τύπος είναι συμβολοσειρά; μπορεί επίσης να δημιουργήσει προειδοποιήσεις, όπως φαίνεται στο παρακάτω σχήμα:



λύση, προσδιορίστε εάν η μεταβλητή είναι null πριν τη χρησιμοποιήσετε και, εάν είναι, μην εκτελέσετε τον παρακάτω κώδικα ή νομίζετε ότιΗ μεταβλητή δεν μπορεί ποτέ να είναι μηδενική, μπορεί να χρησιμοποιηθείArgumentNullException.ThrowIfNull(assemblyFullName); Οι προειδοποιήσεις μπορούν επίσης να αφαιρεθούν! Με άλλα λόγια, εάν η μεταβλητή είναι μηδενική, θα ρίξει μια εξαίρεση απευθείας κατά τη διάρκεια του χρόνου εκτέλεσης!

Περίληψη: Το C# 8.0 εισήγαγε αυτήν τη δυνατότητα και προσωπικά πιστεύω ότι είναι για να βελτιώσει την αυστηρότητα των προγραμματιστών και να αποφύγει κάποια λάθη χαμηλού επιπέδου.

Για περισσότερες λύσεις μεθόδων που μπορεί να είναι μηδενικές, ανατρέξτε στο:Η σύνδεση με υπερσύνδεσμο είναι ορατή.





Προηγούμενος:Ερώτηση για την απομακρυσμένη διεύθυνση του Git του τρέχοντος έργου
Επόμενος:ASP.NET Core (δώδεκα) front-end JS, ομαδοποίηση CSS και συμπίεση
Δημοσιεύτηκε στις 2022-3-26 20:57:32 |
Μαθαίνω να μαθαίνω
Δημοσιεύτηκε στις 2022-3-28 08:23:47 |
Ελάτε να μάθετε
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com