命名空间编写标准和性能问题
本文关键字:性能 问题 标准 命名空间 | 更新日期: 2023-09-27 18:34:52
我正在审查团队代码。我观察到他们通过在班级的上部写using AAA.BBB;
来使用班级ClassA
;他们有时也使用类ClassB
由AAA.BBB.ClassB
.有两个基本问题。
- 使用上述方案时是否有任何性能问题。推荐内容
- 当我声明命名空间时;是否所有类都加载了该命名空间。
请在此处提供帮助。谢谢。
我会尽我所能回答这些问题,我手头没有任何资源,只是经验(也许有人可以帮助(。
-
导入命名空间与直接调用命名空间没有性能问题。当编译器运行它时,您可以认为它最终始终是完全限定的。命名空间的 using 语句更多地是为了帮助开发人员,因此他们不必每次都完全限定它。实际上,对于您的
ClassB
示例,可能是与定义相同类名的多个命名空间发生冲突。例如,Calendar
类既在System.Globalization
又System.Web.UI
,因此在使用它们时必须完全限定其中一个。 -
通常,所有代码都由它所在的项目编译到程序集中。引用程序集内的任何代码将加载所有关联的代码。但请注意,在实际调用代码之前,不一定编译代码以供 JIT 使用。
命名空间
用于组织代码(同时防止名称冲突(。 它们与性能完全无关。
代码中的完全限定名称会分散注意力和嘈杂。我宁愿永远不要拥有它们。如果存在命名空间冲突,则 using 别名可以解决此问题。
仅适用于与在不同命名空间中定义两个类存在冲突的地方,即使这样,我仍然宁愿使用 using 来区分它们:
using MyClassB=AAA.BBB.ClassB;
// :
var myClassB= new MyNS();
在性能方面,您可以在此处看到答案:
use 指令只是在 汇编。是否通过使用 或 包含命名空间 在完全限定的类型名称中提及在 生成的字节码。因此,在运行时没有性能优势 通过使用其中一个。