2010-07-22 40 views
1

我已经看到了你可以做vs使用[namespace.x.xx]?

using System.IO 

,并使用

Path.GetDirectoryName(blah blah) 

,或者直接使用

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

是否有从性能点它们之间有什么区别?

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

或者这是否仅用于避免命名空间中的对象之间的命名冲突?

任何洞察力将不胜感激:)

+0

可能的重复[是否在代码文件中添加更多名称空间会影响性能?](http://stackoverflow.com/questions/2941583/does-adding-more-namespace-in-the-code-file-affect-性能) – Shimmy 2010-12-27 13:21:25

回答

6

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

编译结果将以任何方式相同。

+1

即使他们不这样做,有可能以更容易阅读(因此更易于维护)为目标,而不是担心可能找到的任何可能的性能增益都是更好的主意。 – Amber 2010-07-22 17:42:03

3

如果你看看IL,两种方法没有区别。所有的类名都是完全合格的。静态类只在第一次使用类时加载。所以,这两种方法在最终代码中是等价的。另外,我发现通过浏览using声明来了解类在类外部的事情(例如,执行I/O或生成XML的类)方面正在做什么更有帮助。这与总是声明完全合格的类名称相反。

+0

啊哈!所以我认为静态类是预装的! :D – 2010-07-22 17:44:11

+0

嗯,我应该更清楚。实际使用的类将被预加载,但并非所有名称空间中的所有静态类都已预加载。不能保证他们什么时候会真正加载,除非他们在第一次实际使用之前总是加载。 – drharris 2010-07-22 17:48:46