Странное предупреждение: «назначено, но его значение никогда не используется» - PullRequest
0 голосов
/ 13 июня 2011

Я отправляю это сообщение, потому что меня интересует предупреждение, которое я получил в своем коде c#:

личное поле xxxx назначено, но его значение никогда не используется

Атрибут, о котором идет речь, используется только как флаг для пользователя. Действительно, пользователь может получить (получить) значение false или true, чтобы узнать состояние чего-либо.

Вот пример кода, который создает это предупреждение:

class Class1 {

    //Attributs
    private b_myboolean = false;

    //Accessors
    public bool B_myboolean 
    {
        get{ return b_myboolean;}
    }

     //Methods
     //Somewhere in a method 
     b_myboolean =true;

}

Что-то подобное вернет предупреждение. Ты знаешь почему ? Должен ли я кодировать этот флаг другим способом?

Заранее спасибо за помощь.

Joze

Ответы [ 5 ]

12 голосов
/ 13 июня 2011

Код, который вы разместили, вообще не будет компилироваться, не говоря уже о том, чтобы показать правильное предупреждение ... но я собираюсь догадаться , что ваш реальный код выглядит так:

private bool b_myboolean;

public bool B_myboolean
{
    get { return B_myboolean; } // Bug!
}

Теперь это поле никогда не используется - потому что свойство будет вызывать само по себе рекурсивно.

Конечно, только предположение - если вы обновите свой код до чего-то более реалистичного,мы можем сказать наверняка.

11 голосов
/ 18 марта 2013

Вы можете отключить это конкретное предупреждение.

Вот два кандидата, которые вызывают предупреждения с полями, которые не используются, или его значение никогда не используется:

Предупреждение 169: Поле 'xxx' никогда не используется Предупреждение 414 : поле 'xxx' назначено, но его значение никогда не используется

#pragma warning disable 414
//Attributs
private b_myboolean = false;
#pragma warning restore 414

Я также столкнулся с предупреждающими сообщениями.В общем, конечно, не следует отключать предупреждения.Но окружение только этим полем не слишком драматично.

3 голосов
/ 02 июля 2014

Я знаю, что я отвечаю на этот вопрос почти через три года после того, как он был задан изначально, но, поскольку я получил то же самое, я думал, что просто добавлю что-то еще.

Что касается меня, я получал то же самое предупреждение, и когда я посмотрел в своем коде, я убедился, что он используется.

Итак, у меня было личное поле, подобное этому:

private bool isClosing;

Я даже установил значение false в Конструкторе. А затем на событии MouseClick мне было присвоено значение True. Так как, черт возьми, это не было использовано? И тут меня осенило !!! Вы видите, просто установка переменной в значение в разных местах в моем коде не использует его. Это просто установка его на различные значения. Если я не использую это в некоторой логике (если утверждение), это действительно не используется. Вы должны подумать об этом на мгновение ... и если вы действительно хотите знать наверняка ... продолжайте и удалите все места, где вы установили какое-то значение ... вы обнаружите, что ваш код все еще будет работать так же, как это было до удаления. Это связано с тем, что вы никогда не использовали переменную ни для чего. Опять же, установка переменной для разных значений по всему коду не используется !!

Теперь это умная Visual Studio. :)

Надеюсь, это поможет ... и я могу ошибаться ... но я подумала, что в любом случае я дам тебе пищу для размышлений !!

1 голос
/ 13 июня 2011

Это предупреждение только для того, чтобы показать вам, что оно никогда явно не используется в вашем коде.

Много раз вы будете получать это предупреждение в выражениях try-catch или других условных выражениях.

Не о чем беспокоиться, просто напоминание о просмотре кода, чтобы убедиться, что вы не тратите впустую декларацию.

0 голосов
/ 18 августа 2016

Я использую Visual Studio 2015 Community Edition.

В моем случае все в моем коде правильно, но я получаю то же предупреждение!

Затем я закрыл решение Visual Studio и снова открыл его, оно работает.

Это случается много раз!

Я думаю, проблема в , потому что ошибка Visual Studio !

...