冗余代码警告的含义

时间:2009-08-26 20:33:23

标签: c# .net

当Visual Studio灰显一些代码并告诉你它是多余的时,这是否意味着编译器将忽略此代码或者它仍然会编译此代码?换句话说,这个冗余代码永远不会被解释或者它会被解释吗?或者它只是提醒一下,根本不需要代码?

如果我在我的类/结构中留下冗余代码等,它会对性能产生影响吗?

由于

3 个答案:

答案 0 :(得分:4)

如果代码是冗余的,则不需要进行编译,但将其保留不会对性能产生任何影响。

由于编译器在Visual Studio中将代码识别为冗余,因此不会将其编译为IL或机器代码。

在项目中留下冗余代码并不是一种好习惯。如果将来需要这些代码,您应该从源代码库中的旧版本文件中获取它。

答案 1 :(得分:0)

C#不是解释型语言,它是一种JITted(即时编译)语言,这意味着它是在运行时从MSIL编译的。因此,JITter可以进行分析以确定代码是否冗余,然后将其删除。

将有两次机会删除冗余代码

  1. 在Visual Studio中将C#编译为MSIL。
  2. 在运行(或安装)时JITting MSIL到程序集。
  3. 由于C#编译器本身已标记此问题,这意味着代码可能会在(1)期间被删除。

    所以是的,它只是很好并提醒你。大多数编译器在不告诉程序员的情况下以许多不同且微妙的方式删除冗余代码,但在某些明显的情况下,告诉程序员是个好主意。

答案 2 :(得分:0)

不,它没有编译。

在测试时有时会让我疯狂,我想在某些语句中使用调试器“set next statement”命令并且它没有被编译。