.net vs使用[namespace.x.xx]?
我知道你可以.net vs使用[namespace.x.xx]?,.net,performance,using-directives,.net,Performance,Using Directives,我知道你可以 using System.IO 和使用 Path.GetDirectoryName(blah blah) 或者直接使用 System.IO.Path.GetDirectoryName(blah blah); 从性能上看,它们之间有什么区别吗 是使用System.IO将名称空间中的所有静态类加载到内存中,从而导致使用更多内存,还是框架足够智能以避免这种情况?如果是,如何进行 或者这只是为了避免跨名称空间的对象之间的命名冲突 任何见解都将不胜感激:)不,它们编译为相同的IL。这纯
using System.IO
和使用
Path.GetDirectoryName(blah blah)
或者直接使用
System.IO.Path.GetDirectoryName(blah blah);
从性能上看,它们之间有什么区别吗
是使用System.IO
将名称空间中的所有静态类加载到内存中,从而导致使用更多内存,还是框架足够智能以避免这种情况?如果是,如何进行
或者这只是为了避免跨名称空间的对象之间的命名冲突
任何见解都将不胜感激:)不,它们编译为相同的IL。这纯粹是源代码的问题——通常使用短名称比完全限定名称更具可读性
无论哪种方式,编译结果都是相同的。不,它们编译到相同的IL。这纯粹是源代码的问题——通常使用短名称比完全限定名称更具可读性
无论哪种方式,编译结果都是相同的。如果您查看IL,这两种方法没有区别。所有类名都是完全限定的。静态类仅在首次使用该类时加载。因此,这两种方法在最终代码中是等效的
此外,我发现使用声明浏览
,查看类在类外部做了什么(例如,类是否执行I/O或生成XML)更有帮助。这与总是声明完全限定类名相反。如果您查看IL,这两种方法没有区别。所有类名都是完全限定的。静态类仅在首次使用该类时加载。因此,这两种方法在最终代码中是等效的
此外,我发现使用
声明浏览,查看类在类外部做了什么(例如,类是否执行I/O或生成XML)更有帮助。这与总是声明完全限定的类名相反。即使它们没有声明完全限定的类名,也有可能更好地选择更易于阅读(因而更易于维护)的类名,而不是担心会获得多少性能提升。即使它们没有,很有可能,将目标放在更容易阅读(从而更易于维护)的地方,而不是担心可能会获得的任何微小性能提升,这仍然是一个更好的主意。啊哈!所以我认为静态类是预加载的!:德威尔,我应该说得更清楚些。您实际使用的类将被预加载,但并非您使用的名称空间中的所有静态类都被预加载。除了在你第一次真正使用它之前,它们总是会被加载外,我们不能保证它们会在什么时候被加载。啊哈!所以我认为静态类是预加载的!:德威尔,我应该说得更清楚些。您实际使用的类将被预加载,但并非您使用的名称空间中的所有静态类都被预加载。无法保证它们将在何时实际加载,除非它们总是在您第一次实际使用之前加载。可能的重复