C# 中 using
指令:命名空间内还是命名空间外?
StyleCop 建议将 using
指令放在命名空间声明内。虽然这样做没有直接的技术原因,但它对代码的可维护性会产生细微的影响。
考虑一个 C# 项目中的两个文件:File1 和 File2。在 File1 中,using
指令用于 System.Math,并放在命名空间之外。
// File1.cs using System; namespace Outer.Inner { // ... }
现在,假设 File2 引入一个名为 Outer.Math 的用户自定义类。编译器会在搜索 using
指令之前搜索命名空间,它会优先选择 Outer.Math 而不是 System.Math。如果 Outer.Math 没有像 System.Math 那样具有 PI 成员,则 File1 将无效。
但是,如果将 using
指令放在命名空间内,File1 就可以直接访问 System.Math。
// File1b.cs namespace Outer.Inner { using System; // ... }
现在,编译器会在 Outer 之前搜索 System,找到 System.Math 并避免此问题。
虽然有些人认为由于 System.Math 的存在,将 Math 用作类名是不明智的,但此示例突出了将 using
指令放在命名空间内还是命名空间外的细微差别。这种差异也会影响代码的可维护性。
此外,如果类 Foo 位于 Outer 命名空间而不是 Outer.Inner 命名空间中,则无论 using
指令的位置如何,在 File2 中添加 Outer.Math 都会破坏 File1。这意味着编译器会在检查 using
指令之前搜索最内层的命名空间。
以上是C#'使用”指令应该在命名空间内部或外部?的详细内容。更多信息请关注PHP中文网其他相关文章!