【发布时间】:2020-02-23 04:17:15
【问题描述】:
当一个变量被声明为与基类中的一个变量同名时,警告 CS0108 触发。
警告 CS0114 等同于方法。
两者都标记为警告而不是错误。编译继续,可执行文件可以运行了。
但风险在于调用错误的逻辑错误或错误。
这在现场制作环境中非常危险。
在调试时也非常“不明显”:代码在单步执行时看起来像是在做正确的事情,但实际上并非如此。在高度抽象/继承的代码库中识别该错误可能需要很长时间。
“new”关键字的存在肯定是有原因的,而且(更确切地说)应该通过编译错误来强制使用 - 而不仅仅是警告。
但事实并非如此。您必须在解决方案中的每个项目上手动设置它;甚至不可能在解决方案范围内强制执行。
而且我还没有找到一种方法将其作为新解决方案的默认行为。
为什么?
【问题讨论】:
-
But the risk is a logic error or bug where the wrong one is invoked.风险不一定与错误相同。因此,为什么要警告而不是错误。另外,一旦您将其定义为警告,那么根据定义您已经声明它是可以接受的。如果他们将其默认更改为错误(对于所有客户)用于编译的代码将停止编译。 -
与许多其他警告不同(如果您不及早开始清理,项目很快就会达到 1000 条警告),这些警告始终会产生不良行为,至少对我和在当前的项目。今天我第 n 次点击它并决定用 google-stackoverflow-solve 解决它——我现在很高兴在未来消除了另一个无法言喻的错误和痛苦的来源。
标签: c# visual-studio compiler-errors compiler-warnings