Предупреждение о нулевой ссылке Visual Studio – почему нет ошибки?C#

Место общения программистов C#
Ответить
Anonymous
 Предупреждение о нулевой ссылке Visual Studio – почему нет ошибки?

Сообщение Anonymous »

Я заметил кое-что особенное в Visual Studio. Сначала попробуйте ввести это (C#) где-нибудь в функции:

Код: Выделить всё

class Foo
{
public void Bar()
{
string s;
int i = s.Length;
}
}
Теперь он сразу пометит s в s.Length как ошибку, говоря: "

Код: Выделить всё

Use of unassigned local variable 's'
". С другой стороны, попробуйте этот код:

Код: Выделить всё

class Foo
{
private string s;
public void Bar()
{
int i = s.Length;
}
}
Он скомпилирует и подчеркнет s в частной строке s с предупреждением: "

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»