奇怪的警告:“已分配但其值从未使用过”

时间:2011-06-13 12:37:47

标签: c# compiler-construction warnings compiler-warnings

我发布此邮件是因为我想知道我在c#代码中收到的警告:

  

分配私有字段xxxx但从未使用其值

相关属性仅用作用户的标记。实际上,用户可以访问(获取)值falsetrue以了解某事物的状态。

以下是创建此警告的代码示例:

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 个答案:

答案 0 :(得分:12)

您发布的代码根本不会编译,更不用说显示正确的警告......但我会猜测您的实际代码如下所示:

private bool b_myboolean;

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

现在这永远不会使用该字段 - 因为该属性将递归调用本身

当然,只有猜测 - 如果您将代码更新为更现实的代码,我们可以肯定地说。

答案 1 :(得分:11)

您可以停用此特定警告。

以下是两个候选人,其中包含未使用字段或未使用其值的警告:

警告169:从不使用字段'xxx' 警告414 :已分配字段“xxx”但其值从未使用过

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

我也遇到了警告信息。一般情况下,当然不应禁用警告。但围绕这个领域并不是太戏剧化。

答案 2 :(得分:3)

我知道我在最初被问到这个问题差不多三年后才对这个问题做出贡献,但是自从我得到了同样的信息后,我认为我只是扔了别的东西。

对我来说,我收到同样的警告,当我查看我的代码时,我确定它已被使用。

所以我有一个像这样的私人领域:

私人布尔是关闭;

我甚至在构造函数中将其设置为false。然后在MouseClick事件上我将它设置为True。那么它是如何被使用的呢?然后它突然出现在我身上!您只看到我的代码中的各个位置的变量设置为不使用它。它只是将其设置为各种值。除非我在某些逻辑中使用它(如果声明),否则它实际上并没有被使用。你必须考虑一下......如果你真的想确切知道......继续删除你设置它的所有地方......你会发现你的代码仍然可以工作就像删除前一样。它必须因为你从未使用变量做任何事情。同样,在整个代码中将变量设置为不同的值不使用它!!

现在这是聪明的Visual Studio。 :)

希望有帮助......我可能错了......但是我想在任何情况下都会给你一些思考的东西!!

答案 3 :(得分:1)

此警告仅向您显示它从未在您的代码中明确使用。

很多时候,您会在try-catch语句或其他条件语句中收到此警告。

没有什么可担心的,只需提醒您查看您的代码,以确保您不会浪费声明。

答案 4 :(得分:0)

我正在使用visual studio 2015社区版。

就我而言,我的代码中的所有内容都是正确的,但我收到同样的警告!

然后我关闭了我的visual studio解决方案,并重新打开它,它可以工作。

它发生了很多次!

我想问题是因为Visual Studio的错误