这样做之间是否有任何具体的技术差异......
using OtraLibreria;
namespace Libreria {
class MiClase {
/// mas código aqui
}
}
还有这个?
namespace Libreria {
using OtraLibreria;
class MiClase {
/// mas código aqui
}
}
这样做之间是否有任何具体的技术差异......
using OtraLibreria;
namespace Libreria {
class MiClase {
/// mas código aqui
}
}
还有这个?
namespace Libreria {
using OtraLibreria;
class MiClase {
/// mas código aqui
}
}
是的,两者之间存在细微差别。想象一下,您有以下代码
File1.cs
:现在想象有人
File2.cs
在项目中添加了另一个看起来像这样的文件:编译器
Externo
在查找using
名称空间之外之前进行搜索,因此它会找到Externo.Math
而不是System.Math
. 不幸的是(或者幸运的是),Externo.Math
它没有任何名为 的成员PI
,因此它File1.cs
无法编译。如果您
using
像这样将名称空间放在内部,这会发生变化:现在编译器在
System
beforeExterno
中查找,找到它,System.Math
一切正常。有些人会争辩说,
Math
对于用户定义的类来说,这可能是一个坏名字,因为其中已经存在一个,System
但关键是存在差异,它确实会影响代码的可维护性。如果它
Foo
位于命名空间Externo
而不是Externo.Interno
. 在这种情况下,添加Externo.Math
File2 使其无论在哪里都无法编译using
。这意味着编译器在查看任何using
.不同之处在于您可以减少包含嵌套命名空间的长度。例如:
如果您在名称空间之外全局拥有它,它将影响该文件内的所有名称空间。例子:
有关该主题的更多简要信息,请阅读:使用(指令)
需要注意的另一点是
using
块内的指令是该块namespace
的本地指令并覆盖外部定义。例如,假设您有
A.MiClase
类B.MiClase
和C.MiClase
。然后:我记得,如果我们将 using 放在命名空间内,它只会在调用时加载引用的程序集。也就是说,当使用它的类被加载和启动时。
将 using 放在命名空间之外将在加载主程序集时加载程序集。
这在性能和内存消耗方面非常重要。