您的位置首页百科知识

如何理解C#与CLR的关系

如何理解C#与CLR的关系

的有关信息介绍如下:

如何理解C#与CLR的关系

可能大家对CLR会有一点抽象对吧,不知道是如何运作的,接下来文章可以让大家简单了解一下机制!

一:

CLR:和Java虚拟机一样也是一个运行时环境,在运行时有一些功能(内存管理、安全性、异常处理、线程)是由CLR完成的。CLR不是

单独为某一种语言存在的,而是面向CLR所有语言的使用,只要编译器是面向CLR的都可以

二:

接下以"C#"为题,讨论CLR的作用,这么更容易让读者理解!

当你在面向CLR的编译器中运行C#应用时,会发生如下步骤:

1.C#源代码文件 2.C#编译器 3.托管模块(中间语言(IL)和元数据)

记得IL是和元数据在一起的,接下来先简单了解 IL和元数据是什么,一步步来,就你会了解里面的机制

三:

IL:(中间语言):从字眼上可以知道,中间语言就是基于源代码和目标语言之间对吧,因为C#的源代码不能直接给机器识别的,

这时候就出现来IL,那么先把C#源代码编译成IL,再由IL编译可执行的代码。(C#的两次编译原理)

元数据:元数据主要有两种表示:一种描述源代码中定义的类型和成员,另一种描述源代码引用类型和成员,简单来说就是一个数据表的集合

那么元数据是一个怎么样的一个机制呢?如下

四:当我们在写C#代码的时候,需要引用一些引用类型、成员等数据,这些是从哪里来的呢?是编译器直接从托管模块读取元数据的。

也就是说: 读取时:元数据->面向CLR的编译器(元数据的数据代码编译成编译器可识别的语法进行编程 如:C# VB等) 运行时:1.源代码文件 2.编译器 3.托管模块(中间语言(IL)和元数据)

以上只是简单帮助入门了解一下而已,至于深入了解还得继续学习呢