提问人:Ranhiru Jude Cooray 提问时间:7/23/2010 更新时间:7/23/2010 访问量:145
vs 使用 [namespace.x.xx]?
vs using [namespace.x.xx]?
问:
我已经看到你可以做
using System.IO
并使用
Path.GetDirectoryName(blah blah)
或直接使用
System.IO.Path.GetDirectoryName(blah blah);
从性能的角度来看,它们之间有什么区别吗?
是否将命名空间中的所有静态类加载到内存中,从而导致使用更多内存,或者框架是否足够智能以避免这种情况?如果是,如何?using System.IO
或者这一切都只是为了避免跨命名空间的对象之间的命名冲突?
任何见解将不胜感激:)
答:
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
好吧,我应该更清楚。实际使用的类将被预加载,但并非你使用的命名空间中的所有静态类都是预加载的。无法保证它们何时实际加载,除非它们始终在您第一次实际使用之前加载。
评论