通过使用不必要的使用\进口声明,在性能方面是否有任何意义

时间:2018-01-28 21:40:24

标签: c# asp.net vb.net

McCarson.LearningToCode.Week(3);
Adding to give context to set experience expectations

我见过开发人员在库中导入非常具体元素的代码,并导入整个库本身的引用,与所需元素无关。保存了多少内存(如果有的话),并且需要为页面引用所需的特定元素,以至于只考虑导入所需元素的最佳实践还是一个微不足道的问题? (我确实看到它边缘化了错误的空间)

I researched MSDN, did not find the answer so asking here seems like a logical choice

2 个答案:

答案 0 :(得分:3)

当不需要时,它可以忽略不计getItem它也会损害性能(取决于您的程序和引用的程序集大小和超敏感性)表演)和糟糕的编程习惯 每个using / imports语句的含义是编译器将搜索该程序集中的属性/方法/类等。您还必须考虑using语句的顺序 - 编译器将根据using语句的顺序进行搜索。

BTW - VB.NET和C#之间存在细微差别 - VB默认导入主要名称空间而不是C#。
通过说主要名称空间(.net framework 4.6):

imports

正如@Chillzy在他的评论中写道,VS将会着色 暗灰色的不必要的进口。

答案 1 :(得分:1)

使用/ Importing首先是一种速记,以避免使用完全限定的类型名称(Namespace + Classname)。

也可能存在性能方面的考虑因素,但仅在编写代码时 - 而不是在运行时。无论您如何编写代码,IL仍将使用完全限定的类型名称。如果你没有给出一个完全限定的名字,那么Compiler和Intellisense必须在你所引用的类所使用的命名空间中“猜测”。 95%的案例没有任何问题。

使用/导入整个命名空间从Ambiguity的角度来看可能会出现问题。例如,至少有3个带有“Timer”类的命名空间。它们中的每一种都是不同的类型,具有不同的bebavior和不同的Proeprties / Events。

如果您使用/导入其中任意两个Namesapces,则类名“Timer”不再像“string”或“object”那样具有模仿性。所以突然之间,你必须再次使用所有Timer实例的完全限定名称。

因此,在非常罕见的情况下,在全局级别使用/导入整个命名空间将导致问题无法解决。因此,最好限制use / include指令的范围和深度。