Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net vs使用[namespace.x.xx]?_.net_Performance_Using Directives - Fatal编程技术网

.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)更有帮助。这与总是声明完全限定的类名相反。

即使它们没有声明完全限定的类名,也有可能更好地选择更易于阅读(因而更易于维护)的类名,而不是担心会获得多少性能提升。即使它们没有,很有可能,将目标放在更容易阅读(从而更易于维护)的地方,而不是担心可能会获得的任何微小性能提升,这仍然是一个更好的主意。啊哈!所以我认为静态类是预加载的!:德威尔,我应该说得更清楚些。您实际使用的类将被预加载,但并非您使用的名称空间中的所有静态类都被预加载。除了在你第一次真正使用它之前,它们总是会被加载外,我们不能保证它们会在什么时候被加载。啊哈!所以我认为静态类是预加载的!:德威尔,我应该说得更清楚些。您实际使用的类将被预加载,但并非您使用的名称空间中的所有静态类都被预加载。无法保证它们将在何时实际加载,除非它们总是在您第一次实际使用之前加载。可能的重复