2

像这样添加有什么区别System.Net

 CookieContainer globalcontainer = new System.Net.CookieContainer();

并在声明中使用没有命名空间的类

 CookieContainer globalcontainer = new CookieContainer();

哪个效率更高?

4

2 回答 2

7

两者都不是更有效,一个是显式指定名称空间,另一个是隐式指定。

在 .cs 文件的顶部,using 指令导入命名空间,这意味着这些命名空间中的类型不需要在代码中识别完全限定的路径

例如

List<T>出现在System.Collections.Generic... 没有此命名空间的 using 指令,您必须使用完全限定名称:

System.Collections.Generic.List<int> someList;

而有了它,你不会

using System.Collections.Generic;

List<int> someList;

有时可能会出现命名空间冲突 - 想象以下场景:

Some.Namespace.Task
Some.Othernamespace.Task

如果您导入两个命名空间:

using Some.Namespace;
using Some.Othernamespace;

Task someTask; // <--- this line will cause a compile time error

编译器不知道Task您想要哪个,来自 Some.Namespace 或来自 Some.Othernamespace 的那个 - 在这种情况下,您需要具体并提供完整的命名空间(或使用别名)

希望这可以帮助

在此处阅读有关命名空间的所有信息:

http://msdn.microsoft.com/en-gb/library/z2kcy19k(v=vs.80).aspx

于 2013-04-21T09:20:13.917 回答
3

在运行时,两者通常是相同的。

为了可读性,我通常不喜欢在同一个语句中使用命名空间(把它放在using文件顶部的指令中),因为它通常可以节省空间,让我的行不会太长,这无疑是一个小好处。

这些是我确实包含命名空间的时候:

  • 当我知道类名可能会被误解时,有时 .NET 中的不同命名空间中使用了类型,我希望代码的读者能够更快地理解我的意思

  • 当它是来自此命名空间的唯一调用时,有时我会明确包含命名空间。

  • 如果我要导入多个包含相同类型的命名空间。这个很明显。

因此,无论这听起来是好是坏,答案都是“视情况而定”。无论什么使代码在更短的时间内更具可读性,都是赢家。

http://gurustop.net

于 2013-04-21T09:22:47.680 回答