是的,这些可以被抑制。
通常,我反对抑制警告,但是在这种情况下,用于互操作的结构绝对需要存在一些字段,即使您从未打算(或可以)使用它们,因此在这种情况下,我认为这应该是有道理的。
通常,要禁止这两个警告,您将修复有问题的代码。第一个(“ …永不使用”)通常是早期版本代码遗留下来的代码气味。也许代码已删除,但字段留在后面。
第二个通常是针对错误使用字段的代码气味。例如,您可能会错误地将属性的新值写回到属性本身,而不要写入后备字段。
要禁止显示“ 从不使用字段XYZ ”的警告,请执行以下操作:
#pragma warning disable 0169... field declaration#pragma warning restore 0169
要取消警告“ 字段XYZ从未分配给它,并且将始终具有其默认值XX ”,请执行以下操作:
#pragma warning disable 0649... field declaration#pragma warning restore 0649
要自己找到此类警告编号(即,我怎么知道使用0169和0649),请执行以下操作:
- 正常编译代码,这会将一些警告添加到Visual Studio中的错误列表中
- 切换到“输出”窗口和“生成”输出,并寻找相同的警告
- 从相关消息中复制4位数的警告代码,该代码应如下所示:
C: Dev VS.NET ConsoleApplication19 ConsoleApplication19
Program.cs(10,28):警告CS 0649
:从未将字段’ConsoleApplication19.Program.dwReserved’分配给该字段,并且其默认值始终为0
警告 :根据@Jon Hanna的评论,可能为此发出了一些警告,以供将来查找此问题和答案的人使用。
- 首先,也是最重要的是,抑制警告的行为类似于吞咽头痛药。当然,有时候这样做是正确的事,但这不是万能的解决方案。有时,头痛是您不应该掩盖的真实症状,与警告相同。始终最好尝试通过修正警告原因来处理警告,而不是仅仅从构建输出中盲目删除警告。
- 话虽如此,如果您需要取消警告,请遵循我上面列出的模式。第一行代码
#pragma warning disable XYZK
禁用该 文件其余部分 的警告,或者至少直到#pragma warning restore XYZK
找到相应的警告为止。最小化您禁用这些警告的行数。上面的模式仅对一行禁用警告。 - 而且,正如乔恩(Jon)所提到的,评论为什么这样做是一个好主意。禁用警告绝对是毫无道理的代码气味,而注释将阻止将来的维护人员花时间去想为什么这样做,或者甚至删除它并尝试修复警告。



