未使用的命名空间指令可以导致任何更改?

时间:2010-07-23 09:09:45

标签: .net clr memory-management

我确信代码会产生相同的结果,但CLR会在分配内存时考虑未使用的命名空间指令吗?另一个问题是CLR在分配内存时会考虑未使用的代码块吗?

2 个答案:

答案 0 :(得分:3)

在运行时,无论代码中是否有未使用的using指令,都不会产生影响。

using指令是为了方便起见,以便您可以编写

using System.IO;
[...]
string path = Path.GetDirectoryName(filename);

而不是写出完全限定名称

string path = System.IO.Path.GetDirectoryName(filename);

每次要使用System.IO命名空间中的类型时。该指令告诉编译器哪些名称空间要搜索文件中使用的类型。然后,编译器将实际用第二个示例替换第一个示例,即程序集中的IL代码将始终使用完全限定的类型名称。未使用的命名空间不会出现在已编译的程序集中。

但是,有理由保留导入的名称空间的清单。 John Feminella在related question中说:

  

有几个原因你想要   带他们出去。

     
      
  • 这是毫无意义的。他们没有增加任何价值。
  •   
  • 令人困惑。该名称空间使用了什么?
  •   
  • 如果你不这样做,那么你将逐渐积累无意义的使用   代码转换时的语句   时间。
  •   
  • 静态分析较慢。
  •   
  • 代码编译速度更快。
  •   

答案 1 :(得分:1)

要添加到0xA3的答案:using指令仅存在于C#源代码中。与注释一样,它们在汇编二进制文件中不存在。