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

Joz*_*oze -1 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;

}
Run Code Online (Sandbox Code Playgroud)

这样的东西会返回警告.你知道为什么吗 ?我是否需要以另一种方式编写此标志

感谢您提前帮助.

JOZE

Jon*_*eet 12

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

private bool b_myboolean;

public bool B_myboolean
{
    get { return B_myboolean; } // Bug!
}
Run Code Online (Sandbox Code Playgroud)

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

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


Pat*_*ick 11

您可以禁用此特定警告.

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

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

#pragma warning disable 414
//Attributs
private b_myboolean = false;
#pragma warning restore 414
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

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

private bool isClosing;
Run Code Online (Sandbox Code Playgroud)

我什至在构造函数中将它设置为 false。然后在 MouseClick 事件上,我将其设置为 True。那么它到底是怎么不被使用的呢?然后我就恍然大悟了!!!

你看,只是在我的代码中的不同地方设置一个变量为一个值并没有使用它。它只是将其设置为各种值。除非我在某些逻辑(if语句)中使用它,否则它并没有真正被使用。

你必须考虑一下......如果你真的想确定......继续并删除你将它设置为某个值的所有地方......你会发现你的代码仍然有效就像删除之前一样。

它必须是因为您从未将变量用于任何事情。同样,在整个代码中将变量设置为不同的值并不是在使用它!!

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