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的基础,也是所有应用软件的基 ...
随机推荐
- atitit 如何才能保持基业长青,建立万年企业v2 q66.docx
1. 价值观 1 2. 分权 民主化 扁平化管理 1 3. 剥离经济部门,,降低经济的重要性 .超越利润的追求 1 4. 构建愿景 1 5. 强大的团队文化 企业文化 宗教文化 .教派般的文化 1 1 ...
- 使用DotfuscatorPro_4.9对软件dll库进行加密
点击settings选项,Disable String Encryption改成NO,具体里面的设置如下图. 再点击Rename选项下的options,左边的选项勾上,再把Renaming Schem ...
- ffmpeg中AVOption的实现分析
[时间:2017-10] [状态:Open] [关键词:ffmpeg,avutil,AVOption] 0 引言 AVOptions提供了一种通用的options机制,可以用于任意特定结构的对象. 本 ...
- ffmpeg中av_log的实现分析
[时间:2017-10] [状态:Open] [关键词:ffmpeg,avutil,av_log, 日志输出] 0 引言 FFmpeg的libavutil中的日志输出的接口整体比较少,但是功能还是不错 ...
- Oracle sql 统计
1.按小时统计数量 SELECT TO_CHAR(RECEIVE_TIME,'HH24') HOUR ,COUNT(*) N FROM PH_PRESCRIPTION P WHERE TO_CHAR( ...
- IOS-企业开发人员账号&邓白氏码申请记录
Apple开发人员账号分三种,个人.公司,还有企业.个人和公司都称为标准账号. 另一种是教育机构的账号. 账号介绍 个人和公司的就不说了.如今仅仅说企业账号 首先是申请企业账号的地址: https:/ ...
- halcon开发必读
关于HALCON的新手入门问题简答(1) 无论读入什么图像,读入图像显示效果明显和原始图像不一致,哪怕是从相机读入的图像,也是明显颜色差异.什么原因引起? 答:初步诊断是,显示的时候调用的颜色查找表存 ...
- 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库——安装配置OPEN-SSH,设置主机节点之间免密互访
配置root用户免密互访(为了方便,各台系统中使用统一的证书文件)一.安装Open-SSH 1,查询系统中是否安装了openssh [root@]# opm -qa |grep ssh 如已安装,则列 ...
- 安装 VMWare ESXi 6.7:VMB: 548: Unsupported CPU:6.7版本的ESXi 不支持 某些cpu了
如题,谨记! 升级是双面刃! 用6.5--版本,即可.
- supervisor来自动化部署,集成git
使用此方法基本上在测试环境可以用来代替jenkens构建docker了,部署速度上快很多倍. 写一个脚本拉取git,可以使用git包,也可以直接调用linux或者wndows的 命令来拉取git. 然 ...