Πολλά είδη μελών δομών και κλάσεων (με κύρια εξαίρεση τα πεδία) μπορούν να χρησιμοποιήσουν τη σύνταξη μέλους με σώμα έκφρασης. Ο ορισμός ενός μέλους με μια έκφραση συχνά παράγει πιο συνοπτικό και ευανάγνωστο κώδικα από τα παραδοσιακά μπλοκ ή τις παραδοσιακές εντολές.
Οι μέθοδοι και οι ιδιότητες μόνο για ανάγνωση είναι ανάμεσα στα μέλη που μπορούν να οριστούν με σώμα έκφρασης.
public int Times3(int input) => input * 3;
public int Interesting => 1729;
Μια έκφραση switch μπορεί να αντιστοιχίσει μια τιμή σε μία περίπτωση από ένα σύνολο μοτίβων και να επιστρέψει τη σχετιζόμενη τιμή ή να εκτελέσει τη σχετιζόμενη ενέργεια. Η αντιστοίχιση δηλώνεται με το σύμβολο =>. Επιπλέον, κάθε μοτίβο μπορεί να έχει έναν προαιρετικό φρουρό περίπτωσης, που εισάγεται με τη λέξη-κλειδί when. Η έκφραση του φρουρού περίπτωσης πρέπει να αποτιμάται ως αληθής για να επιλεγεί αυτός ο "κλάδος" του switch. Οι περιπτώσεις (γνωστές και ως κλάδοι switch) αξιολογούνται με τη σειρά που εμφανίζονται στο κείμενο και η διαδικασία διακόπτεται μόλις βρεθεί αντιστοιχία, επιστρέφοντας τη σχετιζόμενη τιμή.
double xx = 42d;
string interesting = xx switch
{
0 => "I suppose zero is interesting",
3.14 when DateTime.Now.Day == 14 && DateTime.Now.Month == 3 => "Mmm pie!",
3.14 => "π",
42 => "a bit of a cliché",
1729 => "only if you are a pure mathematician",
_ => "not interesting"
};
// => interesting == "a bit of a cliché"
Οι τριαδικοί τελεστές επιτρέπουν τον ορισμό συνθηκών if μέσα σε εκφράσεις αντί σε μπλοκ εντολών. Αυτό θυμίζει προσεγγίσεις του συναρτησιακού προγραμματισμού και συχνά κάνει τον κώδικα πιο εκφραστικό και λιγότερο επιρρεπή σε σφάλματα.
Ο τριαδικός τελεστής συνδυάζει 3 εκφράσεις: μια συνθήκη, ακολουθούμενη από μια έκφραση που αξιολογείται και επιστρέφεται αν η συνθήκη είναι αληθής (το τμήμα if, που εισάγεται με ?) και μια έκφραση που αξιολογείται και επιστρέφεται αν η συνθήκη είναι ψευδής (το τμήμα else, που εισάγεται με :).
int a = 3, b = 4;
int max = a > b ? a : b;
// => 4
Οι εκφράσεις throw αποτελούν εναλλακτική λύση αντί για εντολές throw και ειδικότερα μπορούν να ενισχύσουν τις δυνατότητες των τριαδικών και άλλων σύνθετων εκφράσεων.
string trimmed = str == null ? throw new ArgumentException() : str.Trim();
Σου ζητήθηκε να βελτιώσεις κάποιον παλιό κώδικα που σχετίζεται με έναν μετεωρολογικό σταθμό.
Ο μετεωρολογικός σταθμός δέχεται μετρήσεις και εξάγει κάποιες ενδείξεις, όπως θερμοκρασία και πίεση.
Αναδιαμόρφωσε όποιες κατάλληλες μεθόδους της κλάσης WeatherStation χρησιμοποιώντας μέλη με σώμα έκφρασης. Χρησιμοποίησε τριμερείς πράξεις και εκφράσεις switch όπου είναι κατάλληλο, για να βελτιώσεις την εκφραστικότητα και ενδεχομένως να μειώσεις τα σφάλματα.
Βεβαιώσου ότι όλα τα tests συνεχίζουν να περνούν.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις C# με 62 έννοιες178 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.