【问题标题】:Unused namespace directives can cause any change?未使用的命名空间指令会导致任何变化吗?
【发布时间】:2010-07-23 09:09:45
【问题描述】:

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

【问题讨论】:

标签: .net clr memory-management


【解决方案1】:

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

using 指令是为了方便您编写

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

而不是写完全限定名

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

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

但是,有理由保留一个干净的导入命名空间列表。 John Feminella 在related question 中表示:

您想要这样做的原因有几个 把它们拿出来。

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

【讨论】:

    【解决方案2】:

    添加到 0xA3 的答案:using 指令仅存在于 C# 源代码中。与 cmets 一样,它们不存在于程序集二进制文件中。

    【讨论】:

      猜你喜欢
      • 2012-05-31
      • 2011-07-01
      • 2017-02-09
      • 1970-01-01
      • 2017-07-09
      • 2011-01-02
      • 1970-01-01
      • 2011-02-26
      • 2014-05-09
      相关资源
      最近更新 更多