Вы можете проверить это, используя новые языковые функции в C #:
if (!int.TryParse("0", out int foo) || foo == 0)
{
//foo == 0 or the tryparse failed
//foo still exists here though, so if it fails, it will still == 0
}
Вы можете видеть, что объявление foo
происходит внутри вызова int.TryParse
, что не произошло бы, если бы foo == 0
вычислялся первым. Это допустимый синтаксис в C # 7 и выше. На самом деле это все синтаксический сахар для этого:
int foo = 0
if (!int.TryParse("0", out foo) || foo == 0)
{
//foo == 0 or the tryparse failed
}