gpt4 book ai didi

c# - 为什么这个未使用的变量没有给出警告?

转载 作者:可可西里 更新时间:2023-11-01 07:52:54 25 4
gpt4 key购买 nike

在 Windows 上的 VS2010、VS2008 或 MonoDevelop 中编译以下程序时,我收到警告 CS0219 , "变量 'y' 已赋值,但其值从未使用过。

namespace Problem
{
public class Program
{
private static void Main(string[] args)
{
object x = new object();
int y = 0;
}
}
}

为什么在 Visual Studio 中编译时没有针对 x 的警告?

有趣的是,在 Mac OS X 上的 MonoDevelop 中编译时,我确实收到了 x y 的 CS0219 警告。

最佳答案

事实证明,当赋值操作的右侧不是编译时常量时,会抑制此警告。

Microsoft 的 Visual Studio 反馈网站上的一篇已被删除的帖子解释说,这是因为他们收到了很多人的提示,他们纯粹是为了在调试期间查看方法调用返回的内容而分配变量,并发现警告令人恼火:

The suppression of the "assigned but never used" warning in this case was motivated by feedback from users who do this:

int Blah(){
// blah
BlahBlah(x, y, z)
// blah
// blah
}

"Hey," says the user while debugging, "I wonder what BlahBlah is returning?" But there is no easy way to examine the return value in the debugger, so users very frequently do this:

int Blah()
{
// blah
int temp = BlahBlah(x, y, z)
// blah
// blah
}

and then use the locals or watch window to examine temp. The temp is never used anywhere else in the function, so it produced an irritating "assigned but not read" warning.

我认为这有点遗憾,因为:

  1. 实际上,我发现 MonoDevelop 中提供的这些警告很有帮助。
  2. 任何人都可以自己抑制警告(诚然,他们也会抑制未使用的编译时常量分配的警告 - 也许应该为此单独发出警告?)。

无论如何,我明白你不可能取悦所有人。

关于c# - 为什么这个未使用的变量没有给出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10593547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com