在C#中,使用完全限定名称与'using'指令相比更高效吗?

时间:2013-03-13 17:50:24

标签: c# .net performance using-directives

在C#中,为命名空间添加using directive时,它允许您访问该特定命名空间中的所有类型。但是,如果命名空间有很多类型,我只需要一个特定的类型,我经常只使用完全限定的名称,认为我不想提供任何不必要的类,我知道我不会使用(特别是如果在该命名空间中有很多这些出于性能原因。我认为必须对性能产生一些影响(无论多么微小)才能使它们可用而不是,但是多少? (如果确实存在)。如果是这样的话,那么在整个地方做这件事会不会是不好的做法,因为它不会开始累积到一些明显的(表现明智的)吗?

我确实看到other SO post关于使用using指令与完全限定名称,但它没有参考性能。

4 个答案:

答案 0 :(得分:20)

using指令只是在编译期间消失的语法糖。命名空间是通过using包含还是在完全限定的类型名称中提及,与结果字节码完全无关。因此,在运行时使用一个或另一个没有性能优势。

答案 1 :(得分:7)

没有区别。

可能对编译器性能具有可忽略的(即可能不可测量的)影响/好处(如运行msbuild时),但在运行时,IL明确知道预期的类型,因为它& #39;在代码中作为类型句柄烘焙。没有搜索'对于类型,除非使用反射。

答案 2 :(得分:3)

我必须说,不。 编译器将生成相同的IL代码,因此您不必担心这一点。

答案 3 :(得分:0)

这取决于。

使用using指令可以帮助您更快地编写代码。 但是,如果您有两个名称空间,您使用using指令,它们都具有相同名称的方法,并且具有相同的签名,那么您将遇到麻烦。

使用完整的限定参考可以使您的代码更容易理解。