Visual Studio выдает ошибку для возврата неназначенного bool - PullRequest
0 голосов
/ 04 июня 2019

Мой код выглядит примерно так:

bool r;

for (int i = 0; i < arg.Length; i++)
{
    r = arg[i].SomethingThatReturnsBool();
}

return r;

По какой-то причине r в return r имеет красное подчеркивание, которое говорит, что r не назначено. Кто-нибудь знает, что В.С. может так подумать?

Ответы [ 3 ]

1 голос
/ 04 июня 2019

Статический анализ спасает вас от будущей ошибки, очевидно, length может быть 0, и в таком случае что должен возвращать этот метод?

Простое решение - просто инициализировать что-то

bool r = false;
0 голосов
/ 04 июня 2019

Сначала необходимо установить значение r в false.

bool r = false;
static object myLock = new object();
lock(myLock)
{
     for (int i = 0; i < arg.Length; i++)
     {
          r = arg[i].SomethingThatReturnsBool();
     }
}

return r;
0 голосов
/ 04 июня 2019

Ваш массив arg может в один прекрасный день иметь нулевую длину, поэтому тело цикла никогда не будет работать, а r никогда не будет присвоено значение

При объявлении присваивайте r подходящее значение, какое бы значение вы не хотели иметь, если бы arg была нулевой длины. Если вы знаете, что arg никогда не будет иметь нулевую длину, это не имеет значения, что вы выберете (но не ожидайте, что компилятор сможет определить, что arg всегда будет иметь ненулевую длину; некоторые вещи «знают» только люди). (и ошибиться - вот откуда берутся ошибки;)))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...