为啥编译器说一个字段从不使用? [关闭]

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`?是不是有一些选项可以解决此警告?

为啥 Go 编译器不能推断结构实现了接口 [关闭]

当我使用泛型约束接口时,为啥可以编译字符串[关闭]

为啥编译器试图将 char * 转换为 char? [关闭]

跟编译器警告说拜拜

为啥在 TypeScript 中的“任何”字段类型变量上使用“字符串”函数时没有编译时错误?