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

问题描述 投票:0回答:5

为什么我的 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吗?

c# warnings compiler-warnings
5个回答
13
投票

您可以禁用此特定警告。

以下两个候选者会因未使用字段或其值从未使用而导致警告:

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

#pragma warning disable 414

// Attributes
private b_myboolean = false;

#pragma warning restore 414

我还遇到了警告消息。一般来说,我们当然不应该禁用警告。但仅围绕这个领域并不太引人注目。


11
投票

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

private bool b_myboolean;

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

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

当然,这只是猜测 - 如果您将代码更新为更实际的内容,我们可以肯定地说。


7
投票

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

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

private bool isClosing;

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

你看,只是在我的代码中的不同位置将变量设置为值并没有使用它。它只是将其设置为不同的值。除非我在某些逻辑中使用它(

if
声明),否则它并没有真正被使用。

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

必须如此,因为您从未将变量用于任何用途。再说一遍,在整个代码中将变量设置为不同的值并不是在使用它!!

这就是聪明的 Visual Studio。 :)


1
投票

此警告只是为了向您表明它从未在您的代码中显式使用。

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

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


0
投票

我正在使用 Visual Studio 2015 Express

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

我关闭了 Visual Studio 解决方案,然后重新打开它。成功了。

这样的事已经发生过很多次了!

我猜问题是 因为 Visual Studio 错误

© www.soinside.com 2019 - 2024. All rights reserved.