【发布时间】:2010-07-23 09:09:45
【问题描述】:
我确信代码会产生相同的结果,但 CLR 会在分配内存时考虑未使用的命名空间指令?另一个问题可能是 CLR 在分配内存时会考虑未使用的代码块?
【问题讨论】:
标签: .net clr memory-management
我确信代码会产生相同的结果,但 CLR 会在分配内存时考虑未使用的命名空间指令?另一个问题可能是 CLR 在分配内存时会考虑未使用的代码块?
【问题讨论】:
标签: .net clr memory-management
无论您的代码中是否有未使用的using 指令,在运行时都不会产生影响。
using 指令是为了方便您编写
using System.IO;
[...]
string path = Path.GetDirectoryName(filename);
而不是写完全限定名
string path = System.IO.Path.GetDirectoryName(filename);
每次您想使用来自System.IO 命名空间的类型。该指令告诉编译器在哪些命名空间中搜索文件中使用的类型。然后编译器实际上将用第二个示例替换第一个示例,即程序集中的 IL 代码将始终使用完全限定的类型名称。未使用的命名空间不会出现在编译的程序集中。
但是,有理由保留一个干净的导入命名空间列表。 John Feminella 在related question 中表示:
您想要这样做的原因有几个 把它们拿出来。
- 这毫无意义。它们没有任何价值。
- 令人困惑。该命名空间使用了什么?
- 如果你不这样做,那么你会逐渐积累毫无意义的使用 代码更改时的语句 时间。
- 静态分析速度较慢。
- 代码编译速度更快。
【讨论】:
添加到 0xA3 的答案:using 指令仅存在于 C# 源代码中。与 cmets 一样,它们不存在于程序集二进制文件中。
【讨论】: