理论问题:这样做有什么区别:
using System;
...
var foo = new String("foo");
还有这个:
var foo = new System.String("foo");
DLL加载?性能差异?
主要是,我怀疑在这种情况下最好的代码实践是什么?
不,它们将被编译为完全相同的 IL。
该using
指令(没有“命名空间访问器”这样的术语)只是一种告诉 C# 编译器在尝试将简单名称解析为完全限定名称时应该查看该命名空间的方式。
(当然两者实际上都无法编译,因为String(String)
.NET 中没有构造函数,但这是另一回事。)
请注意,使用内置别名string
也与使用System.String
类型相同——它实际上只是一个别名。例如:
// Just one type!
string x = new String(new char[10]);
一样。使用您更喜欢的任何一个。我使用using
, 并在发生名称冲突时回退到全名。
它对性能或负载没有影响。
但是,它可能会影响 IDE 性能——例如,如果您使用using
指令,它会添加 IDE 必须查找以解析 Intellisense 的位置。这不是不使用它们的理由,但可能是将它们保持在最低限度并避免使用未使用using
指令的原因。
作为一种编码实践,using
如果您在不同的命名空间中有类似命名的类,则指令可能会导致混淆。例如,假设您正在创建一个具有称为 Tasks 的关键对象的待办事项应用程序,但您也在使用 Threading.Tasks 执行一些线程处理工作。你不想在using
那里使用指令。
正如其他人所说,没有性能优势。不使用 using 的一个好处是避免命名空间歧义。假设您有两种不同类型的页面,一种是指您网站上的页面,而另一种是指书籍中的页面。它们是具有不同属性的两个离散对象。在这种情况下,您必须写出整个命名空间才能区分您所指的页面类型。