Код: Выделить всё
class Foo
{
public void Bar()
{
string s;
int i = s.Length;
}
}
Код: Выделить всё
Use of unassigned local variable 's'Код: Выделить всё
class Foo
{
private string s;
public void Bar()
{
int i = s.Length;
}
}
Код: Выделить всё
Field 'Foo.s' is never assigned to, and will always have its default value nullТеперь, если VS настолько умен и знает, что s всегда будет нулевым, почему не является ошибкой получение его длины во второй Например? Мое первоначальное предположение было: «Ошибка компиляции выдается только в том случае, если компилятор просто не может завершить свою работу. Поскольку технически код выполняется до тех пор, пока вы никогда не вызываете Bar(), это всего лишь предупреждение». За исключением того, что объяснение недействительно в первом примере. Вы все равно можете запускать код без ошибок, пока вы никогда не вызываете Bar(). Итак, что дает? Просто недосмотр или я что-то упускаю?
Подробнее здесь: https://stackoverflow.com/questions/141 ... y-no-error
Мобильная версия