Это новая функция C # 7, которая является очень хорошей функцией, часто используемой в сочетании с сопоставлением с образцом. Об этой и многих других функциях объявлено в блоге группы разработчиков C # Что нового в C # 7.0 .
Команда пытается добиться более гибкого кода. Вы помните случаи, когда список выходных переменных становился очень длинным и бесполезным? Просто быстрый пример:
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)) { }
Видите проблему? Бесполезно, чтобы все эти выходные переменные ничего не делали. Количество строк можно сократить вдвое с помощью 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)) { }
Сведено к минимуму не только количество строк, но и нет ненужного списка переменных в области видимости, где вы не хотите их иметь. Это не позволяет вам использовать переменную, которую вы не собирались использовать, но которая теперь вам видна.
Эта функция также полезна при сопоставлении с образцом в switch
операторах, как в этом коде (который имеет другое поведение, чем приведенный выше код!):
switch (o)
{
case int i: { break; }
case Guid g: { break; }
case DateTime d: { break; }
}