在C#中,使用完全限定名称和使用“using”指令哪个更高效?

16
在C#中,当你添加一个using指令到一个命名空间时,它会让你访问该特定命名空间中的所有类型。然而,如果该命名空间有很多类型,而我只需要一个特定的类型,我经常会使用完全限定名称,认为我不想使我不会使用的任何不必要的类可用(特别是如果该命名空间中有很多这样的类)出于性能原因。我想这样做肯定会对性能产生一些影响(无论多么微小),使它们可用与否会有多大影响(如果实际上有的话)。如果是这样,那么这样做是否会成为一种不好的实践,因为这样做会开始累积到一些可以注意到的东西(从性能上来看)?
我看到了其他SO帖子关于使用using指令与完全限定名称的区别,但它并不涉及性能问题。

2
添加 using 指令不会影响运行时性能。请参见 https://dev59.com/VmUq5IYBdhLWcg3wV_Ai - Sam
我不确定,也许只是语法糖的问题? - Mark Segal
4个回答

29

using指令只是编译期间消失的一些语法糖。无论是通过using包含命名空间还是在完全限定的类型名称中提到,这都与结果字节码无关。因此,在运行时使用其中之一并没有性能上的优助。


7

没有区别。

在编译器性能(运行msbuild时)方面,它可能会有微不足道的影响/好处,但在运行时,IL明确知道预期的类型,因为它作为类型句柄嵌入到代码中。除非使用反射,否则不需要搜索类型。


2
小的术语问题,但我会说它“明确地”知道所需的类型... - Marc Gravell

3

我必须说,不需要。 编译器会生成相同的IL代码,所以您不必担心这个问题。


0

这只是取决于情况。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接