是';使用名称空间';意味着在该命名空间下加载整个类型

本文关键字:命名空间 加载 类型 空间 意味着 | 更新日期: 2023-09-27 18:25:01

说我有一个代码

using System;
using System.Windows.Forms;
class TestApp
{
   static void Main()
   {
     Console.WriteLine("Testing! 1, 2, 3");
     MessageBox.Show("Hello...");
   }
}

CCD_ 1&System.Windows.Forms意味着在运行时加载所有类型(在这些名称空间内),尽管im仅用于在控制台上打印并显示消息框?

并且在执行时是否会有用于加载那些所需类型(Console&MessageBox)的任何存储器被消耗。。。

[并且会有一些代码块(在Console中)仍然未被源代码使用,但它仍然会被加载吗?]

因此,任何关于幕后发生的事情的线索(至少是上面10行代码)都会很有用。。。

是';使用名称空间';意味着在该命名空间下加载整个类型

using语句是仅在编译时使用的语句,允许编译器在每次使用时查找被引用的类型,而无需指定完全限定的名称,它们不会在运行时加载任何直接引用同一类型时不会加载的内容。

是的,所有类型都直接在名称空间中,所以子名称空间中没有任何类型。这意味着有许多using会增加编译时间。但它对运行时没有影响,因为到那时已经没有using了,而且每个命名空间的使用都已转换为对类型的直接引用。

*这意味着它说"加载符号"的部分,实际上并不总是必须这样做。因此,我工作中的大解决方案需要30秒才能加载所有符号,但大多数编译都非常快,因为它不必重新加载符号。

编辑@xCoder:这与程序集的工作方式有关,没有类,只有数据。因此,使用更高级别语言的类每个都编译成不同的汇编代码,因为类处理数据的方式不同。C#使用IL而不是汇编,我不确定,但这可能也起到了类似的作用。