我正在审核团队代码。我观察到他们使用了ClassA
课,在课程的上半部分写了using AAA.BBB;
;他们有时会使用ClassB
的{{1}}课程。有两个基本问题。
请在这里提供帮助。感谢。
答案 0 :(得分:2)
我会尽可能地回答这些问题,我手头没有任何资料,只是经验(也许有人可以提供帮助)。
导入命名空间与直接调用命名空间没有性能问题。当编译器运行它时,你可以认为它最终总是完全合格。命名空间的using语句更多是为了帮助开发人员,因此他们不必每次都完全限定它。实际上,对于您的ClassB
示例,可能是与定义相同类名的多个名称空间发生冲突。例如,Calendar
类同时位于System.Globalization
和System.Web.UI
中,因此您在使用它们时必须完全符合其中一个。
通常,所有代码都由它所在的项目编译成程序集。引用程序集内部的任何代码都将加载所有相关代码。但是请注意,在实际调用之前,代码不一定要编译以供JIT使用。
答案 1 :(得分:1)
命名空间用于组织代码(同时防止名称冲突)。它们根本不影响性能。
答案 2 :(得分:1)
代码中的完全限定名称会分散注意力并产生噪音。我宁愿永远不要拥有它们。如果存在名称空间冲突,则使用别名可以解决该问题。
仅适用于与不同命名空间中定义的两个Class存在冲突的地方,即便如此,我仍然会使用using来区分它们:
using MyClassB=AAA.BBB.ClassB;
// :
var myClassB= new MyNS();
就性能而言,您可以看到答案here:
using指令只是在语法中消失的语法糖 汇编。是否通过使用或包含命名空间 在完全限定的类型名称中提到的完全不相关 结果字节码。因此,运行时没有性能优势 通过使用其中一个。