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

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

Το C # 6 αποστέλλεται με το Visual Studio 2015 και διαθέτει μερικές ενδιαφέρουσες νέες δυνατότητες. Υπάρχουν πολλές δυνατότητες που προωθούν λιγότερη ακαταστασία κώδικα και καθαρότερο, διατηρήσιμο κώδικα. Σε αυτήν την ανάρτηση, θα ήθελα να σας καθοδηγήσω μερικές από τις νέες δυνατότητες στη γλώσσα C #.

Φίλτρα εξαίρεσης

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

δοκιμάστε

{

// κάποιον κώδικα που μπορεί να ρίξει μια εξαίρεση

}

catch (Εξαίρεση εξαίρεσης) εάν (εξαίρεση.GetType ()! = typeof (SqlException))

{

ExceptionManager.HandleException (εξαίρεση);

}

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

δοκιμάστε

{

ρίξτε νέο CustomException ("");

}

catch (CustomException ex) εάν (ex.Message == "")

{

// ο έλεγχος θα έρθει σε αυτό το μπλοκ αλιευμάτων

}

catch (CustomException ex) εάν (ex.Message == "")

{

// ο έλεγχος δεν θα έρθει σε αυτό το μπλοκ αλιευμάτων

}

Υποστήριξη για ασύγχρονη σύλληψη και τελικά μπλοκ

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

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

public async Διαδικασία εργασιώνAsync ()

{

δοκιμάστε

{

// κάποιον κώδικα που μπορεί να ρίξει μια εξαίρεση

}

σύλληψη

{

περιμένετε Task.Delay (5000);

}

τελικά

{

περιμένετε Task.Delay (1000);

}

}

Το παρακάτω απόσπασμα κώδικα δείχνει ότι μπορείτε να περιμένετε μια κλήση προς την προσαρμοσμένη μέθοδο LogExceptionAsync () για την εξαίρεση καταγραφής.

δοκιμάστε

{

// κωδικός που μπορεί να ρίξει μια εξαίρεση

}

αλίευση (εξαίρεση εξαίρεση)

{

περιμένετε LogExceptionAsync (εξαίρεση);

}

Υποστήριξη για στατικές δηλώσεις "χρήσης"

Αυτό είναι ένα άλλο ωραίο νέο χαρακτηριστικό στο C # 6 που σας επιτρέπει να επικαλέσετε μια στατική μέθοδο χωρίς την ανάγκη ρητών αναφορών. Εδώ είναι ένα παράδειγμα.

χρησιμοποιώντας το Σύστημα;

χρησιμοποιώντας το System.Console;

Πρόγραμμα δημόσιας τάξης

{

ιδιωτικό στατικό κενό Κεντρικό ()

{

WriteLine ("Νέες δυνατότητες στο C # 6");

}

}

Όπως μπορείτε να δείτε στο παραπάνω απόσπασμα κώδικα, δεν χρειάζεται πλέον να προσδιορίσετε ρητά τον τύπο όταν καλείτε τη στατική μέθοδο WriteLine () που ανήκει στην κλάση System.Console. Στην ουσία, αυτή η δυνατότητα προάγει καθαρότερο κώδικα - κώδικα που είναι ευκολότερο να διαβάζεται, να γράφεται και να συντηρείται.

Αυτόματοι αρχικοποιητές ιδιοτήτων

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

πελάτης τάξης

{

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

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

δημόσια int Age {get; σειρά; } = 44;

}

Στις παλαιότερες εκδόσεις του C # έπρεπε να χρησιμοποιείτε συχνά προεπιλεγμένους κατασκευαστές για να ορίσετε προεπιλεγμένες τιμές στις ιδιότητες της κλάσης.

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

LogManager τάξης

{

δημόσια στατική LogManager Instance {get; } =

νέο LogManager ();

}

Αρχικοποιητές λεξικών

Αυτή η δυνατότητα σάς δίνει τη δυνατότητα να προετοιμάσετε τις προεπιλεγμένες τιμές σε ένα Λεξικό με πολύ λιγότερο κώδικα. Εδώ είναι ένα παράδειγμα που το απεικονίζει αυτό.

Πρόγραμμα τάξης

{

static void Main (συμβολοσειρά [] args)

{

Λεξικό dict = νέο λεξικό ()

{

["USA"] = "Washington DC",

["Αγγλία"] = "Λονδίνο",

["Ινδία"] = "Νέο Δελχί"

};

}

}

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

Κύριος κατασκευαστής

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

Εδώ είναι ένα παράδειγμα που δείχνει πώς μπορούν να χρησιμοποιηθούν οι πρωτογενείς κατασκευαστές.

τάξη Υπάλληλος (string firstName, string lastName, string string)

{

δημόσια συμβολοσειρά FirstName {get; σειρά; } = πρώτο όνομα;

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

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

}

Μπορείτε να ανατρέξετε σε αυτό το άρθρο MSDN για περισσότερες πληροφορίες σχετικά με τις νέες δυνατότητες και βελτιώσεις στο C # 6.