以下是内存使用的等价物吗?
System.Threading.Thread.Sleep(500);
VS
using System.Threading;
...
Thread.Sleep(500);
我原本以为你在内存中使用的命名空间越少越好,但我听说前一个例子必须将命名空间加载到内存中。我知道Sleep
不是内存饥饿方法的最好例子,但它只是一个例子。
答案 0 :(得分:8)
using
语句根本不会导致任何内容被加载,它只会告诉编译器在哪里查找类。
这两个例子产生完全相同的代码。
答案 1 :(得分:3)
这两个在编译时产生完全相同的IL,如其他帖子所述。
但是有一点不同。第一个选项显式地让编译器知道类/方法/结构/等的去向。第二个选项包括命名空间(System.Threading)到编译器的要搜索的命名空间列表中。
如果在using语句中有许多名称空间,则会导致编译器花费更长的时间来编译此文件。使用C#,这可能不是你一直关心的事情,因为编译器非常快,但确实会减慢速度。
有一个非常大的项目和非常大的命名空间(由于其他原因这不是一个好主意),这可能是显而易见的(尽管仍然很微妙)。
答案 2 :(得分:2)
我不相信你可以用“include”语句将“using”语句与plain C语言中的包含意义相提并论 - 当编译CLR代码时,它将忽略实际上没有使用的指定命名空间。组装
using
语句适用于:
编译器将负责优化它,无需担心。