C#基础加强(4)之秒懂IL、CTS、CLS和CLR
IL(Intermediate Language)
中间语言。.Net 平台下不只有 C# 语言,还有 VB.Net、F# 等语言。IL 是程序最终编译的可执行二进制代码(托管代码),类似于 Java 中的 class 字节码文件,也叫中间语言,不同的语言最终都编译成标准的 IL(MSIL),这样在 .Net 平台下不同语言之间的程序集就可以互相调用了。

CTS(Common Type System)
公共类型系统。由于 .Net 平台上的不同语言中的数据类型各不相同,比如整数类型在 VB.Net 中是 Integer ,而 C# 中时 int 。.Net 平台制定了一个公用类型系统(CTS),各个语言编译器把自己语言的类型翻译成 CTS 中的类型。
看如下几个相同功能的示例程序:
internal class Program
{
public static void Main(string[] args)
{
;
Console.WriteLine(i);
}
}
C#
Public Shared Sub Main(ByVal args As String())
Console.WriteLine(num)
End Sub
VB.Net
它们最终编译的 IL 语言都为如下:
.method public hidebysig static void Main(string[] args) cil managed
{
.entrypoint
.maxstack
.locals init (
[] int32 num)
L_0000: nop
L_0001: ldc.i4.s
L_0003: stloc.
L_0004: ldloc.
L_0005: call void [mscorlib]System.Console::WriteLine(int32)
L_000a: nop
L_000b: ret
}
IL

CLS(Common Language Specification)
公共语言规范。不同语言的语法不同,比如定义一个类 A 继承自 类 B,C# 的语法是 Class A : B{} ,而 VB.Net 的语法是 Class A Inherits B 。因此 .Net 平台规定了公共的语言规范(CLS)。

CLR(Common Language Runtime)
公共语言运行时。顾名思义,IL 代码就是由 CLR 驱动运行,而 CLR 类似于 Java 中的 JVM,提供了垃圾回收 GC(Garbage Collection)、JIT(即时编译器)。
值类型变量是放再栈内存中,而引用类型的变量是放置在堆内存,栈内存变量会在方法结束后自动释放,而堆内存中的对象需要 GC 来回收。

C#基础加强(4)之秒懂IL、CTS、CLS和CLR的更多相关文章
- 什么是.Net, IL, CLI, BCL, FCL, CTS, CLS, CLR, JIT
什么是.NET? 起源:比尔盖茨在2000年的Professional Developers Conference介绍了一个崭新的平台叫作Next Generation Windows Service ...
- 浅谈CLR CTS CLS。。。
So The First Is CLR CLR的全程是Common Language Runtime 公共语言运行时 可以把他理解为包含运行.net程序的引擎 和 一堆符合公共语言基础(CLI)的类 ...
- 什么是CTS、CLS和CLR
CTS.CLS和CLR是.NET框架的基本概念,但往往成为程序员们忽视的部分.清楚理解三者的概念,有助于.NET程序员编写高效安全的.NET程序. 所涉及到的知识点 • .NET的基本概念 • ...
- 第五篇 .NET高级技术之CTS、CLS、CLR
CTS.CLS.CLR 1. .Net平台下不只有C#语言,还有VB.Net.F#等语言.IL是程序最终编译的可以执行的二进制代码(托管代码),不同的语言最终都编译成标准的IL(中间语言,MSIL): ...
- CTS,CLS,CLR解释
问题阐述 CTS.CLS和 CLR分别是什么意思? 专家解答 CTS.CLS和 CLR是.NET框架的 3个核心部分,下面分别对它们进行介绍. (1)CTS CTS即通用类型系统,它定义了如何在.NE ...
- CTS、CLS、CLR
CTS.CLS和CLR是.NET框架的3个核心部分,下面分别对它们进行介绍. 1)CTS Common Type System CTS即通用类型系统,它定义了如何在.NET Framework运行库 ...
- CTS、CLS、CLR分别作何解释?
CTS.CLS.CLR分别作何解释? 答:CTS:通用类型系统.CLS:通用语言规范.CLR:公共语言运行库.
- C#中IL, CTS, CLR, CLS, JIT含义
1. IL/MSIL (Microsoft Intermediate Language) 微软中间语言 (IL是MSIL的缩写,译为中间语言) 2. CTS (Common Type System ...
- “菜”鸟理解.NET Framework(CLI,CLR,CTS,CLS,BCL,FCL)
既然要学.NET,就要先认识认识她,我不喜欢大段大段文字的东西,自己通过理解,画个图,来看看.NET的沉鱼落雁,闭月羞花之容. 最下层蓝色部分是.NET Framework的基础,也是所有应用软件的基 ...
随机推荐
- MSSQL数据导出到MYSQL
MSSQL数据导出到MYSQL 花了一天时间把MSSQL里的数据导出到MYSQL, 好麻烦,二个数据库都是阿里云买的云服务器. 先上阿里云控制面板,备份下MSSQL数据库,下载备份下来,在本地电脑上还 ...
- idea 配置普通web项目
跟配置maven项目类似 idea 配置 maven 项目 注意点 1.取消第一步 2.添加依赖的时候,如果lib下没有servlet依赖包,可以加个tomcat环境进来编译 ps:在artifact ...
- linux技巧---为各应用创建快捷方式
linux中启动或关闭应用有时候比较麻烦,你必须cd到该应用的可执行脚本的目录中再执行该脚本,不能在任意目录下开启或关闭应用..当然,设置了环境变量path可以解决在任意目录下开启应用的问题,但是每个 ...
- 关于QQ邮箱有时候接受不到邮件的解决
1.很可能是被当作垃圾邮件拦截了,这时候就要自己找回 2.首先点击邮箱首页 3.在最后一行倒数第三个选择自助查询 4.一般在收信查询或者删信查询里面,找到被删的邮件,添加到白名单就好了
- JavaScript之JS的数据类型
前言 JavaScript一共有6中数据类型: 基本数据类型(5):字符串(String).数字(Number).布尔(Boolean).数组(Array).空(Null).未定义(Undefined ...
- 乾坤合一~Linux设备驱动之终端设备驱动
多想拥你在我的怀里 却无法超越那距离 美好回忆渐渐地远去 盼望今生出现奇迹 无尽的想念 荒了容颜 无助的爱恋 从未改变 这是今天的旋律,,,,今生今世,遥不可及~ 1 终端设备 终端是一种字符型设备, ...
- scala 隐式详解(implicit关键字)
掌握implicit的用法是阅读spark源码的基础,也是学习scala其它的开源框架的关键,implicit 可分为: 隐式参数 隐式转换类型 隐式调用函数 1.隐式参数 当我们在定义方法时,可以把 ...
- centos 7 IP不能访问nginx Failed connect to 185.239.226.111:80; No route to host解决办法
服务器环境 centos 7.4 问题描述 1.可以ping通IP ,用IP访问nginx 不能访问,在服务器上curl localhost curl 185.239.226.111可以获得 [ro ...
- 【CF497E】Subsequences Return 矩阵乘法
[CF497E]Subsequences Return 题意:设$s_k(x)$表示x在k进制下各位数的和mod k的值.给出k,现有序列$s_k(1),s_k(2),...s_k(n)$.求这个序列 ...
- mybatis04--Mapper动态代理实现
通过之前的操作,我们发现dao的实现类其实并没有做什么实质性的工作,仅仅是通过sqlSession的相关API定位到StudentMapper映射文件 中的ID中的sql语句,其实真正操作DB的是ma ...