在C#中,为命名空间添加using
directive时,它允许您访问该特定命名空间中的所有类型。但是,如果命名空间有很多类型,我只需要一个特定的类型,我经常只使用完全限定的名称,认为我不想提供任何不必要的类,我知道我不会使用(特别是如果在该命名空间中有很多这些出于性能原因。我认为必须对性能产生一些影响(无论多么微小)才能使它们可用而不是,但是多少? (如果确实存在)。如果是这样的话,那么在整个地方做这件事会不会是不好的做法,因为它不会开始累积到一些明显的(表现明智的)吗?
我确实看到other SO post关于使用using
指令与完全限定名称,但它没有参考性能。
答案 0 :(得分:20)
using
指令只是在编译期间消失的语法糖。命名空间是通过using
包含还是在完全限定的类型名称中提及,与结果字节码完全无关。因此,在运行时使用一个或另一个没有性能优势。
答案 1 :(得分:7)
没有区别。
可能对编译器性能具有可忽略的(即可能不可测量的)影响/好处(如运行msbuild时),但在运行时,IL明确知道预期的类型,因为它& #39;在代码中作为类型句柄烘焙。没有搜索'对于类型,除非使用反射。
答案 2 :(得分:3)
我必须说,不。 编译器将生成相同的IL代码,因此您不必担心这一点。
答案 3 :(得分:0)
这取决于。
使用using指令可以帮助您更快地编写代码。 但是,如果您有两个名称空间,您使用using指令,它们都具有相同名称的方法,并且具有相同的签名,那么您将遇到麻烦。
使用完整的限定参考可以使您的代码更容易理解。