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



在c#中,当您为命名空间添加using指令时,它使您可以访问该特定命名空间中的所有类型。然而,如果名称空间有很多类型,而我只需要一个特定的类型,我通常只使用完全限定的名称,认为我不想让任何我知道我不会使用的不必要的类可用(特别是如果名称空间中有很多这样的类)出于性能原因。我在想,必须对性能产生一些影响(不管有多小)才能使它们可用,而不是不可用,但影响有多大呢?(如果真的有的话)。如果是这样,那么在所有地方都这样做是不是不好的做法,因为它不会开始积累到一些明显的东西(性能方面)?

我确实看到了另一个关于使用using指令与完全限定名称的SO帖子,但它不是在参考性能。

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

没有区别。

可能对编译器性能的影响/好处可以忽略不计(即可能无法测量)(如在运行msbuild时),但在运行时,IL显式地知道预期的类型,因为它在代码中作为类型句柄被烘焙。除非使用反射,否则不会对类型进行"搜索"。

我必须说,没有。编译器将生成相同的IL代码,所以您不必担心。

这要看情况。

使用Using指令可以帮助你更快地编写代码。但是,如果你有2个命名空间,你使用using指令,这两个命名空间的方法都有相同的名字,也有相同的签名,你会遇到麻烦。

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

最新更新