CSharp 7
De Banane Atomic
Aller à la navigationAller à la recherche
Literals
- Écriture des entiers plus lisible
- Écriture de nombres binaires
Pattern matching
Écriture simplifiée de as if != null
object o = 10; // Ancienne écriture int? i = o as int?; if (i != null) { j = i * 2; } // Nouvelle écriture if (o is int i) { j = i * 2; } |
Switch on types
Tuple: nouvelle écriture d'une méthode retournant plusieurs éléments
Out variables: déclaration inline du paramètre out
// ancienne écriture: déclaration du paramètre out avant son utilisation int i; bool b = int.TryParse("10", out i); // Nouvelle écriture: le paramètre out est déclaré inline bool b = int.TryParse("10", out int i); |
Local function
public string MainMethod() { string s = string.Empty; for (int i = 0; i < 10; i++) { LocalMethod(i); } return s; void LocalMethod(int i) { s += i.ToString(); // accès à la variable s définie dans la méthode englobante } } |
throw if null
private string _mp; public string MyProperty { get => _mp; set => _mp = value ?? throw new InvalidOperationException(); } |
Return by reference
int[] numbers = { 1, 2, 3, 4 }; ref int v = ref Substitute(2); // on récupère la référence de l'entier 2 v = 10; // on modifie la valeur pointé par cette référence, ce qui modifie la valeur dans le tableau Console.WriteLine(string.Join(", ", numbers)); // 1, 10, 3, 4 ref int Substitute(int value) { for (int i = 0; i < numbers.Length; i++) { if (numbers[i] == value) { return ref numbers[i]; } } throw new IndexOutOfRangeException("Not found!"); } |