CSharp 7
Apparence
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!");
}
|