To jest nowa funkcja z C # 7, która jest bardzo fajną funkcją często używaną w połączeniu z dopasowywaniem wzorców. Ta funkcja i wiele innych są ogłoszone w blogu zespołu języka C # Co nowego w języku C # 7.0 .
To, co zespół stara się osiągnąć, to bardziej płynny kod. Czy pamiętasz przypadki, w których lista naszych zmiennych staje się bardzo długa i nie nadaje się do użytku? Tylko krótki przykład:
int i;
Guid g;
DateTime d;
if (int.TryParse(o, out i)) { }
else if (Guid.TryParse(o, out g)) { }
else if (DateTime.TryParse(o, out d)) { }
Widzisz problem? Nie ma sensu, aby wszystkie te zmienne siedziały tam i nic nie robiły. Liczbę wierszy można zmniejszyć o połowę za pomocą C # 7:
if (int.TryParse(o, out int i)) { }
else if (Guid.TryParse(o, out Guid g)) { }
else if (DateTime.TryParse(o, out DateTime d)) { }
Nie tylko liczba linii jest zminimalizowana, ale także nie ma zbędnej listy zmiennych w zakresie, w których nie chcesz ich mieć. Uniemożliwia to użycie zmiennej, której nie zamierzałeś użyć, ale która jest teraz dla Ciebie widoczna.
Ta funkcja jest również przydatna przy dopasowywaniu wzorców w switch
instrukcjach, jak w tym kodzie (który zachowuje się inaczej niż powyższy kod!):
switch (o)
{
case int i: { break; }
case Guid g: { break; }
case DateTime d: { break; }
}