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

本文关键字:性能 问题 标准 命名空间 | 更新日期: 2023-09-27 18:34:52

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

  1. 使用上述方案时是否有任何性能问题。推荐内容
  2. 当我声明命名空间时;是否所有类都加载了该命名空间。

请在此处提供帮助。谢谢。

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

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

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

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

命名空间

用于组织代码(同时防止名称冲突(。 它们与性能完全无关。

代码中的完全限定名称会分散注意力和嘈杂。我宁愿永远不要拥有它们。如果存在命名空间冲突,则 using 别名可以解决此问题。

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

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

在性能方面,您可以在此处看到答案:

use 指令只是在 汇编。是否通过使用 或 包含命名空间 在完全限定的类型名称中提及在 生成的字节码。因此,在运行时没有性能优势 通过使用其中一个。