为啥编译器说一个字段从不使用? [关闭]
Posted
技术标签:
【中文标题】为啥编译器说一个字段从不使用? [关闭]【英文标题】:Why is the compiler saying a field is never used when it is? [closed]为什么编译器说一个字段从不使用? [关闭] 【发布时间】:2014-05-28 21:39:26 【问题描述】:追求完美以捕捉美丽(解释文斯·隆巴迪),我试图摆脱一个项目的唯一警告,那就是: c:\project\nrps\PoisonFoot\releases\6-4-0\hhs\frmPlatypus.cs(103,16):警告 CS0169:从未使用私有字段 'PDQClient.frmPlatypus.scanned'
所以我把那行注释掉了:
private bool scanned = false;
...但后来我得到了:
C:\Project\nrps\PoisonFoot\Releases\6-4-0\HHS\frmPlatypus.cs(3390):在类或命名空间“PDQClient.frmPlatypus”中不存在名称“scanned”
...在两个地方(在同一个类中,它被认为是不必要的定义)
我怎么能在不尝试的情况下欺骗编译器?如何在不收到错误的情况下摆脱警告?
【问题讨论】:
代码中哪些地方导致了第二个错误? 你在使用#if也许吗? “追求完美......”所以升级你的 Visual Studio 版本......你落后了 10 年。:)
-Show- 阅读编译器抱怨的行。 scanned
被分配到那里,但再也没有读过。
那些超快的近距离选民可悲了。 有足够的信息找到答案,我从中学到了!!
【参考方案1】:
当csc
(C# 编译器)说一个字段从不使用时,它实际上意味着你从不读取该字段。如果您只写入私有成员字段,编译器会推断该字段是多余的。所以,我会假设在frmPlatypus.cs
的第 3390 行中,您分配给已扫描,而不是从中读取,这就是编译器抱怨的原因。
还有 - 第 3390 行?真的吗?
【讨论】:
+1 表示 “还有 - 第 3390 行?真的吗?”。顺便说一句,我见过最糟糕的...... 不是“多余的”,而是无关紧要的。它的分配甚至可能从 IL 中丢失。 “第 3390 行?真的吗?”是什么意思?我处理的文件的行数比这多几个数量级。事实上,我见过这么多行的 METHODS(而且我从未见过healthcare.gov 代码)。 我删除了所有引用该字段的代码 - 在一个地方它被指定为“true”,在另一个地方被指定为“false”,但这些状态对其他任何东西都没有任何影响。 从名字上看好像是一个表单类,如果他用的是表单设计器,3390行其实并没有那么多……以上是关于为啥编译器说一个字段从不使用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥它显示警告:从不读取字段:`group`?是不是有一些选项可以解决此警告?