1

我正在审查团队代码。我观察到他们通过在班级的上部ClassA写作来使用班级;using AAA.BBB;他们也曾使用过 class ClassBby AAA.BBB.ClassB。有两个基本问题。

  1. 使用上述场景时是否存在任何性能问题。推荐什么
  2. 当我声明命名空间时;是否所有类都加载了该命名空间。

请在这里提供帮助。谢谢。

4

3 回答 3

2

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

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

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

于 2013-10-10T04:04:20.020 回答
1

代码中的完全限定名称令人分心且嘈杂。我宁愿永远不要拥有它们。如果存在命名空间冲突,使用别名可以解决该问题。

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

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

在性能方面,你可以在这里看到答案:

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

于 2013-10-10T04:02:38.040 回答
1

命名空间用于组织您的代码(同时防止名称冲突)。它们根本与性能无关。

于 2013-10-10T04:01:30.257 回答