未使用的使用语句

时间:2010-11-12 09:44:20

标签: c# optimization using

我可能已经知道这个问题的答案,但我认为无论如何都值得问。如果我的代码文件中有using个语句,那么不是正在使用;

  1. 这是否会对性能造成任何不利影响?
  2. 编译器如何在编译/运行时处理它们?
  3. 由于

6 个答案:

答案 0 :(得分:19)

  

这会对性能产生任何不利影响吗?

没有

  

编译器如何在编译/运行时处理它们?

在编译时,它们会按照您的期望执行操作,即充当命名空间导入。它们不会出现在已编译的二进制文件中:对类型的任何引用都使用完全限定名称。

编译器确实在using语句中检查命名空间,即使它不需要;如果删除命名空间,则引用它的所有using语句都将失败。

对我来说,多余的using语句就像多余的评论。它们对编译器没有任何影响,但包含太多它们,并且您可能会使开发人员感到困惑。

答案 1 :(得分:8)

它不会影响运行时的性能

从那以后,它可能会略微增加编译时间:

1)编译器需要解析几个字符
2)它必须在更多候选者之间查找标识符。但由于这可能使用哈希表,因此它也不应该很昂贵。

我猜编译器减速可以忽略不计

我猜它会减慢Intellisense的速度,因为它必须显示的列表和过滤器会相当长一些。

删除未使用的用途更具风格,而不是性能提升。您需要注意扩展方法,因为它们通过使用语句进入范围。例如,即使它当前未使用,我也不会删除using System.Linq

答案 2 :(得分:1)

运行时没有性能损失,在编译时解析使用,忽略无用的。

答案 3 :(得分:1)

在运行时没有性能影响。但是,许多命名空间可能会减慢代码完成速度并降低工作效率

答案 4 :(得分:0)

它完全没有影响 - 请参阅对此问题的回应:

How is performance affected by an unused using directive?

答案 5 :(得分:0)

它可能会使编译时间更长,但它对运行时性能没有影响或可忽略不计。