在c#中,引用未使用的命名空间时是否存在编译惩罚?

时间:2014-02-21 23:28:40

标签: c# visual-studio compilation namespaces

最近,我的同事一直在进行一些反对行数的圣战。当我签入一个新文件时,我通常会保留Visual Studio包含的所有引用的命名空间,默认情况下(System,System.Collections.Generic和System.Linq是我几乎总是依赖的专业)。几天后,我的同事将审查差异,看看我可能实际上没有使用.Linq命名空间中的任何函数,他会剪辑它。几天后,当我回到文件中并希望添加一些依赖于.Select的功能时,当我看到命名空间消失后我的血压会升高,我必须将其添加回来。

我的问题是:除了项目行数的边际减少或源文件的大小之外,剪切这些未使用的名称空间是否有任何实际好处? .NET编译器在分析时是如此差,以至于未使用的命名空间会导致输出程序集中的惩罚?如果他正在追求这种疯狂,我会接受它作为一个经验教训......我无法想象这有任何理智的理由。对我来说似乎只是愚蠢的疯狂。

3 个答案:

答案 0 :(得分:1)

与搜索和剪辑所花费的时间相比,即使VS可以选择进行清洁,也绝对没有任何好处。除了编译时间优势和清晰的编码外,没有什么好处。

欲了解更多信息:

Why remove unused using directives in C#?

答案 1 :(得分:0)

不会像你猜的那样提高性能,但删除不需要的使用就是保持代码干净,整洁和可读。

编译器将仅使用我们在代码中使用的必需和相关程序集。

利用visual studio的Remove unused usings命令并删除未使用的命名空间,以使您的代码更精简,也可以让其他开发人员阅读。

答案 2 :(得分:-1)

在编译时,只有使用的命名空间被编译到IL中。那些未使用的将被忽略。

除了微小的(并且不明显的)编译延迟,.Net正在弄清楚你正在使用哪些命名空间,对输出没有任何影响。