Возможно, на этот вопрос уже был дан ответ, но слово , если
встречается так часто, что его трудно найти.
Пример не имеет смысла (выражение всегда верно) , но это иллюстрирует мой вопрос.
Почему этот код действителен:
StringBuilder sb;
if ((sb = new StringBuilder("test")) != null) {
Console.WriteLine(sb);
}
Но этот код неверен:
if ((StringBuilder sb = new StringBuilder("test")) != null) {
Console.WriteLine(sb);
}
Я нашел аналогичный вопрос относительно оператора while
. В принятом ответе говорится, что в операторе while
это будет означать, что переменная будет определяться в каждом цикле. Но в моем примере оператора if
это не так.
Так по какой причине нам не разрешено это делать?
Это из-за типа переменной инициализации. Для инициализации в условии, это должно быть следующие:
if (new StringBuilder("test") is StringBuilder ResultVar && ResultVar != null) {
// Do something with ResultVar
ResultVar.Append("OK");
}
// Not accesible because the var never initialized
ResultVar.Append("Error");