16

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

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

4

4 回答 4

28

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

于 2013-03-13T17:53:13.537 回答
7

没有区别。

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

于 2013-03-13T17:53:07.247 回答
3

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

于 2013-03-13T17:54:19.267 回答
0

这取决于。

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

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

于 2013-03-13T17:56:10.793 回答