Dies ist eine neue Funktion aus C # 7, eine sehr schöne Funktion, die häufig in Verbindung mit dem Mustervergleich verwendet wird. Diese und viele weitere Funktionen werden im C # -Team-Blog " Neuigkeiten in C # 7.0" angekündigt .
Das, was das Team hier erreichen will, ist flüssigerer Code. Erinnern Sie sich an einige Fälle, in denen die Liste der Out-Variablen ohne Verwendung extrem lang wird? Nur ein kurzes Beispiel:
int i;
Guid g;
DateTime d;
if (int.TryParse(o, out i)) { /*use i*/ }
else if (Guid.TryParse(o, out g)) { /*use g*/ }
else if (DateTime.TryParse(o, out d)) { /*use d*/ }
Sehen Sie das Problem? Es ist sinnlos, wenn all diese Out-Variablen dort sitzen und nichts tun. Die Anzahl der Zeilen kann mit C # 7 halbiert werden:
if (int.TryParse(o, out int i)) { /*use i*/ }
else if (Guid.TryParse(o, out Guid g)) { /*use g*/ }
else if (DateTime.TryParse(o, out DateTime d)) { /*use d*/ }
Es wird nicht nur die Anzahl der Zeilen minimiert, es gibt auch keine unnötige Liste von Variablen im Bereich, in denen Sie sie nicht haben möchten. Dies verhindert, dass Sie eine Variable verwenden, die Sie nicht verwenden wollten, die aber jetzt für Sie sichtbar ist.
Diese Funktion ist auch beim Mustervergleich in switch
Anweisungen nützlich , wie in diesem Code (der sich anders verhält als der obige Code!):
switch (o)
{
case int i: { /*use i*/ break; }
case Guid g: { /*use g*/ break; }
case DateTime d: { /*use d*/ break; }
}