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

Νέες δυνατότητες στο C # 7

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

Ακολουθεί μια γρήγορη ματιά στο νέο και βελτιωμένο στο C # 7.

  • Υποστήριξη για τοπικές λειτουργίες
  • Βελτιωμένη υποστήριξη για τύπους Tuple
  • Τύποι εγγραφής
  • Ταίριασμα μοτίβου
  • Μη ακυρώσιμοι τύποι αναφοράς
  • Αμετάβλητοι τύποι
  • Καλύτερη υποστήριξη για έξω μεταβλητές

Καλύτερη υποστήριξη για έξω μεταβλητές

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

δημόσιο κενό Αποθήκευση (Προϊόν p)

{

p.SaveData (έξω int x);

// Συνήθης κωδικός

}

Ένα καλό μέρος για να χρησιμοποιήσετε τη μεταβλητή βρίσκεται μέσα στο μπλοκ δοκιμής σας. Απλώς χρησιμοποιήστε μια μεταβλητή Boolean out όπου ένας τύπος επιστροφής true δείχνει ότι η λειτουργία είναι επιτυχής, ψευδώς διαφορετικά.

Ταίριασμα μοτίβου

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

αντικείμενο obj = "Αυτή είναι μια επίδειξη αντιστοίχισης προτύπων στο C # 7";

εάν (ο obj είναι string string)

{

Κονσόλα.WriteLine (str);

}

Υποστήριξη για τοπικές λειτουργίες

Ίσως χρειάζεστε συχνά μια βοηθητική λειτουργία που πρέπει να χρησιμοποιείται μόνο μία φορά - ίσως με μία μόνο μέθοδο. Τώρα μπορείτε να δηλώσετε τέτοιες λειτουργίες σε άλλη λειτουργία. Τέτοιες λειτουργίες είναι γνωστές ως τοπικές συναρτήσεις. Ουσιαστικά, η υποστήριξη τοπικών λειτουργιών σάς επιτρέπει να δηλώνετε μεθόδους εντός ενός πεδίου αποκλεισμού. Αν και αυτό ήταν εφικτό χρησιμοποιώντας τύπους Func και Action με ανώνυμες μεθόδους στις προηγούμενες εκδόσεις της γλώσσας C #, υπήρχαν λίγες προκλήσεις. Δεν υποστηρίζουν γενικές παραμέτρους, παραμέτρους και παραμέτρους ref και out.

Καλύτερη υποστήριξη για Tuples

Το Tuple είναι μια προσωρινή ομαδοποίηση τιμών. Είναι παρόμοιο με ένα μάθημα POCO αλλά έχει δημιουργηθεί εν κινήσει. Το κύριο πλεονέκτημα της χρήσης ενός Tuple είναι η δυνατότητα μιας μεθόδου για την επιστροφή πολλαπλών τιμών. Ίσως θέλετε να χρησιμοποιήσετε μια πλειάδα για να αντιπροσωπεύσετε ένα σύνολο ετερογενών δεδομένων και να παρέχετε έναν εύκολο τρόπο πρόσβασης σε αυτά τα δεδομένα. Το Tuples δεν είναι κάτι καινούργιο και εδώ και αρκετό καιρό υπάρχει. Έχετε υποστήριξη για πλειάδες στις γλώσσες προγραμματισμού F # και Python. Μπορείτε να εκμεταλλευτείτε μια πλειάδα για να αποθηκεύσετε μια διατεταγμένη, πεπερασμένη ακολουθία αμετάβλητης, πεπερασμένης ακολουθίας ομοιογενών ή ετερογενών δεδομένων σταθερών μεγεθών.

Τώρα έχετε υποστήριξη για Tuple literals και Tuple αποδόμηση επίσης. Στο C # 7, μια πλειάδα θεωρείται τύπος τιμής. Ως εκ τούτου είναι ένας μεταβλητός τύπος και πολύ πιο αποτελεσματικός όσον αφορά την απόδοση.

Μη ακυρώσιμοι τύποι αναφοράς

Οι μηδενικοί τύποι τιμών παρουσιάστηκαν για πρώτη φορά στο C # 2.0. Ο μη ακυρώσιμος τύπος αναφοράς είναι ακριβώς το αντίθετο αυτής της δυνατότητας. Ουσιαστικά, ένας μη ακυρώσιμος τύπος αναφοράς χρησιμοποιείται για να δηλώσει έναν τύπο αναφοράς που είναι εγγυημένο ότι δεν θα είναι μηδενικός. Δείτε πώς δηλώνεται ένας μη ακυρώσιμος τύπος αναφοράς στο C # 7:

σειρά! str; // Αυτός είναι ένας μη ακυρώσιμος τύπος αναφοράς

Καλύτερη υποστήριξη για αμετάβλητα αντικείμενα

Ένα αμετάβλητο αντικείμενο είναι εκείνο του οποίου η κατάσταση δεν μπορεί να τροποποιηθεί μόλις δημιουργηθεί. Αυτό καθιστά ένα αμετάβλητο νήμα αντικειμένου ασφαλές. Ας υποθέσουμε ότι δημιουργείτε μια κλάση που περιέχει μια ιδιότητα που έχει ένα getter αλλά δεν έχει ρυθμιστεί. Ναι προφανώς, φαίνεται ότι ένα παράδειγμα της τάξης είναι αμετάβλητο. Ωστόσο, σε μεταγενέστερο χρονικό σημείο, εάν κάποιος προσθέσει ένα ρυθμιστή για την ίδια ιδιότητα, το αμετάβλητο χάνεται, έτσι δεν είναι;

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

var firstObject = νέος υπάλληλος (101);

var secondObject = firstObject με {EmployeeId = 102};

Τύποι εγγραφών

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

ορθογώνιο κλάσης (int Ύψος, int Breadth)