1

我从谷歌阅读主题,我明白这一点:

  1. Windows 加载程序加载 .net 应用程序的 exe 或 dll。
  2. 然后 Windows 加载程序为该进程创建 clr。
  3. 然后它找到应用程序的入口点并调用它。
  4. 但是在 clr 的类加载器服务来加载包含 Main 方法的类之前。
  5. 然后进行 jit 编译。
  6. clr 向我们的应用程序提供诸如 gc、异常处理、类加载等服务。

我的问题是:

现在,当我们运行 .net app 时,clr 会找到入口点并开始执行。但是当它遇到

Class1 ob = new Class1();  

那个时候我们的进程如何调用CLR的服务,称为类加载器?MSIL 代码相当于是 newobj 在内部调用 clr 的类加载器服务吗?

4

1 回答 1

1

理解CLR的内部工作需要付出很多努力。但是,如果您有兴趣,请阅读此CLR Internal Workings

该站点对 CLR 的工作进行了广泛而详细的解释。

具体来说,您的答案来自站点的 ObjectInstance 部分。他们使用过

SmallClass obj = new SmallClass();

来解释功能。

希望能帮助到你。

于 2012-11-05T06:48:39.293 回答