为什么.NET中的基类库?

时间:2011-07-26 02:08:01

标签: c#

我对C#程序的执行方式感到有点困惑。 我到现在所学到的是,

  1. C#program + Base Class库形成源代码
  2. 此源代码提供给C#编译器以转换为MSILIL代码。
  3. 将此MSIL代码移交给.NET Framework以转换为本机代码。
  4. 所以我的问题是为什么我们需要.NET Framework中的基类,因为必需的基类已经存在 转换为MSIL代码?

    我上述过程是否错误? 请帮忙! 我用谷歌搜索但是无法清除它。 谢谢您的关注!

3 个答案:

答案 0 :(得分:7)

基类库不是源代码的一部分。这是您的源代码所引用的内容,但C#编译器不会重新编译它。

答案 1 :(得分:4)

你有点不对劲:

  1. C#代码构成源代码
  2. 源代码由C#编译器编译为 CIL 并打包在程序集
  3. 在运行时, CLR
  4. 加载您的程序集(及其引用的任何程序集)
  5. CLR有一个 JIT编译器,可以从该CIL生成机器代码
  6. 然后执行生成的机器代码

答案 2 :(得分:0)

C#program + Base Class库形成一个源代码,然后我们使用各自的编译器编译源代码。 那个时间: -

每当我们编译用任何.net语言编写的代码时,相关的编译器(如C#,VB编译器)都会生成名为assembly的二进制文件(可能是.dll或.exe),它包含MSIL代码或CIL代码。这些指令是低级别的人类可读语言,后来可以通过运行时编译器(JIT,它是CLR的一部分)在第一次执行时转换为机器语言。它只是在执行期间完成,因此编译器将具有事先知识它将运行哪个环境,以便它可以发出针对该平台的优化机器语言代码。 .net Framework的这种编译器称为即时(JIT)编译器或Jitter。

并且编译器不会重新编译dll或基类库,这些库是由您的源代码引用的。

基类库提供了许多功能,可以达到目标附近,我们使用它们。