vs 使用 [namespace.x.xx]?

vs using [namespace.x.xx]?

提问人:Ranhiru Jude Cooray 提问时间:7/23/2010 更新时间:7/23/2010 访问量:145

问:

我已经看到你可以做

using System.IO

并使用

Path.GetDirectoryName(blah blah)

或直接使用

System.IO.Path.GetDirectoryName(blah blah);

性能的角度来看,它们之间有什么区别吗?

是否将命名空间中的所有静态类加载到内存中,从而导致使用更多内存,或者框架是否足够智能以避免这种情况?如果是,如何?using System.IO

或者这一切都只是为了避免跨命名空间的对象之间的命名冲突?

任何见解将不胜感激:)

.NET 性能 using 指令

评论

0赞 Shimmy Weitzhandler 12/27/2010
代码文件中添加更多命名空间会影响性能吗?

答:

6赞 Jon Skeet 7/23/2010 #1

不,它们编译为相同的 IL。这纯粹是源代码的问题 - 使用短名称而不是完全限定的名称通常更具可读性。

无论哪种方式,编译结果都是相同的。

评论

1赞 Amber 7/23/2010
即使他们没有这样做,以更易于阅读(因此更易于维护)为目标仍然是一个更好的主意,而不是担心可能会发现任何微不足道的性能提升。
3赞 drharris 7/23/2010 #2

如果你看一下IL,这两种方法没有区别。所有类名都是完全限定的。静态类仅在首次使用该类时加载。因此,这两种方法在最终代码中是等效的。

此外,我发现浏览声明以查看类在类外部执行的操作(例如,类是否执行 I/O 或生成 XML)会更有帮助。这与始终声明完全限定的类名相反。using

评论

0赞 Ranhiru Jude Cooray 7/23/2010
啊哈!所以我认为静态类是预加载的!:D
0赞 drharris 7/23/2010
好吧,我应该更清楚。实际使用的类将被预加载,但并非你使用的命名空间中的所有静态类都是预加载的。无法保证它们何时实际加载,除非它们始终在您第一次实际使用之前加载。