命名空间编写标准和性能问题

时间:2013-10-10 03:58:38

标签: c# .net

我正在审核团队代码。我观察到他们使用了ClassA课,在课程的上半部分写了using AAA.BBB;;他们有时会使用ClassB的{​​{1}}课程。有两个基本问题。

  1. 使用上述方案时是否存在任何性能问题。推荐什么
  2. 当我声明命名空间时;是否所有类都加载了该命名空间。
  3. 请在这里提供帮助。感谢。

3 个答案:

答案 0 :(得分:2)

我会尽可能地回答这些问题,我手头没有任何资料,只是经验(也许有人可以提供帮助)。

  1. 导入命名空间与直接调用命名空间没有性能问题。当编译器运行它时,你可以认为它最终总是完全合格。命名空间的using语句更多是为了帮助开发人员,因此他们不必每次都完全限定它。实际上,对于您的ClassB示例,可能是与定义相同类名的多个名称空间发生冲突。例如,Calendar类同时位于System.GlobalizationSystem.Web.UI中,因此您在使用它们时必须完全符合其中一个。

  2. 通常,所有代码都由它所在的项目编译成程序集。引用程序集内部的任何代码都将加载所有相关代码。但是请注意,在实际调用之前,代码不一定要编译以供JIT使用。

答案 1 :(得分:1)

命名空间用于组织代码(同时防止名称冲突)。它们根本不影响性能。

答案 2 :(得分:1)

代码中的完全限定名称会分散注意力并产生噪音。我宁愿永远不要拥有它们。如果存在名称空间冲突,则使用别名可以解决该问题。

仅适用于与不同命名空间中定义的两个Class存在冲突的地方,即便如此,我仍然会使用using来区分它们:

using MyClassB=AAA.BBB.ClassB;
//  :
var myClassB= new MyNS();

就性能而言,您可以看到答案here

  

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