为什么我的 C# 代码中会收到以下警告?
私有字段 xxxx 已分配,但其值从未使用过
相关属性仅用作用户的flag。事实上,用户可以访问(获取)值
false
或 true
来了解某物的状态。
这是创建此警告的代码示例:
class Class1 {
// Attributes
private b_myboolean = false;
// Accessors
public bool B_myboolean
{
get{ return b_myboolean;}
}
// Methods
// Somewhere in a method
b_myboolean =true;
}
类似的事情会返回警告。为什么?我必须用另一种方式编码这个flag吗?
您可以禁用此特定警告。
以下两个候选者会因未使用字段或其值从未使用而导致警告:
警告169:从未使用过“xxx”字段 警告 414:已分配字段“xxx”,但从未使用其值
#pragma warning disable 414
// Attributes
private b_myboolean = false;
#pragma warning restore 414
我还遇到了警告消息。一般来说,我们当然不应该禁用警告。但仅围绕这个领域并不太引人注目。
您发布的代码根本无法编译,更不用说显示正确的警告...但我将猜测您的实际代码如下所示:
private bool b_myboolean;
public bool B_myboolean
{
get { return B_myboolean; } // Bug!
}
现在这永远不会使用该字段 - 因为该属性将递归地调用 itself。
当然,这只是猜测 - 如果您将代码更新为更实际的内容,我们可以肯定地说。
对我来说,我收到了同样的警告,当我查看代码时,我确信它正在被使用。
所以我有一个像这样的私人领域:
private bool isClosing;
我什至在构造函数中将其设置为 false。然后在 MouseClick 事件中我将其设置为 True。那么它到底是怎么没有被使用的呢?然后我就恍然大悟了!!!
你看,只是在我的代码中的不同位置将变量设置为值并没有使用它。它只是将其设置为不同的值。除非我在某些逻辑中使用它(
if
声明),否则它并没有真正被使用。
你必须考虑一下......如果你真的想确定......继续删除所有将其设置为某个值的地方......你会发现你的代码仍然会就像删除之前一样工作。
必须如此,因为您从未将变量用于任何用途。再说一遍,在整个代码中将变量设置为不同的值并不是在使用它!!
这就是聪明的 Visual Studio。 :)
此警告只是为了向您表明它从未在您的代码中显式使用。
很多时候,您会在 try-catch 语句或其他条件语句中收到此警告。
没什么可担心的,只是提醒您检查代码以确保没有浪费声明。
我正在使用 Visual Studio 2015 Express。
就我而言,代码中的所有内容都是正确的,但我收到相同的警告!
我关闭了 Visual Studio 解决方案,然后重新打开它。成功了。
这样的事已经发生过很多次了!
我猜问题是 因为 Visual Studio 错误!