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