.NET中的CTS、CLS和CLR】的更多相关文章

在学习.NET的过程中,都会不可避免地接触到这三个概念,那么这三个东西是什么以及它们之间的关系是怎样的呢?我们在学习的过程中可能比较过多的会去关注CLR,因为CLR是.NET Framework的核心,但是我要说的是CTS和CLS更为重要,因为他们是CLR的核心.任何编程语言,如果想要在.NET CLR上执行,就必需提供一个编译器,将此语言的程序编译成.NET CLR所认识的metadata以及IL,符合CTS的规定.并非所有的语言都能和C#一样符合CTS的规范,毕竟许多语言出现在先,CTS出现…
以下内容来自:http://www.cnblogs.com/zagelover/articles/2741370.html 在学习.NET的过程中,都会不可避免地接触到这三个概念,那么这三个东西是什么以及它们之间的关系是怎样的呢?我们在学习的过程中可能比较过多的会去关注CLR,因为CLR是.NET Framework的核心,但是我要说的是CTS和CLS更为重要,因为他们是CLR的核心.任何编程语言,如果想要在.NET CLR上执行,就必需提供一个编译器,将此语言的程序编译成.NET CLR所认识…
一.解释1 1.CLR(Common Language Runtime) :公共语言运行库 CLR 是CTS(Common Type System:通用类型系统)的实现, 即是说:CLR是应用程序的执行引擎和功能齐全的类库, 该类库严格按照CTS规范实现.作为程序执行引擎,CLR 负责安全地载入和运行用户程序代码,包括对不用对象的垃圾回收 和安全检查.在CLR监控之下运行的代码成为托管代码(managed code). 2.CTS(Common Type System):通用类型系统 CTS不但…
CTS.CLS和CLR是.NET框架的基本概念,但往往成为程序员们忽视的部分.清楚理解三者的概念,有助于.NET程序员编写高效安全的.NET程序. 所涉及到的知识点 •   .NET的基本概念 •   CLS.CTS和常用语言的关系 分析问题    CLR的全称是公共语言运行库(Common Language Runtime),读者可以把CLR理解为一个包含运行.NET程序的引擎和一堆符合公共语言基础结构的类库的集合.CLR是一个规范的实现,我们开发的 几乎所有的.NET程序都基于CLR的类库来…
So  The First Is CLR CLR的全程是Common Language Runtime 公共语言运行时 可以把他理解为包含运行.net程序的引擎 和 一堆符合公共语言基础(CLI)的类库的集合.它是一个规范的实现,我们开发的大多数.net程序都是基于CLR的类库实现 并运行在CLR的运行引擎之上.通常所说的.NET框架 就是CLR CLI (Common Language Infrastructure) 公共语言基础 是Microsoft想ECMA提交的一份语言和数据格式规范.C…
什么是.NET? 起源:比尔盖茨在2000年的Professional Developers Conference介绍了一个崭新的平台叫作Next Generation Windows Service,也就是后来的.NET. 软件层:.NET可以被看作是介于操作系统和编程语言之间的软件层,它可以支持多种编程语言,包括C#,VB.NET,C++,F#,等等. 用来产生托管代码的框架.平台:传统的编译方式是"源代码→编译→可执行文件",在.NET中编译方式是"源代码→编译→程序集…
CTS.CLS.CLR 1. .Net平台下不只有C#语言,还有VB.Net.F#等语言.IL是程序最终编译的可以执行的二进制代码(托管代码),不同的语言最终都编译成标准的IL(中间语言,MSIL):这样C#可以调用VB.Net写的程序集(Assembly,dll.exe).在.Net平台下:不同语言之间可以互联互通.互相调用 2.不同语言中的数据类型各不相同,比如整数类型在VB.Net中是Integer.C#中是int..Net平台规定了通用数据类型(CTS,Common Type Syste…
问题阐述 CTS.CLS和 CLR分别是什么意思? 专家解答 CTS.CLS和 CLR是.NET框架的 3个核心部分,下面分别对它们进行介绍. (1)CTS CTS即通用类型系统,它定义了如何在.NET Framework运行库中声明.使用和管理类型,同时也是.NET Framework运行库支持跨语言集成的一个重要组成部分.通用类型系统主要执行以下功能: .建立一个支持跨语言集成.类型安全和高性能代码执行的框架. .提供一个支持完整实现多种编程语言的面向对象的模型. .定义各语言必须遵守的规则…
CTS.CLS和CLR是.NET框架的3个核心部分,下面分别对它们进行介绍. 1)CTS  Common Type System CTS即通用类型系统,它定义了如何在.NET Framework运行库中声明.使用和管理类型,同时也是.NET Framework运行库支持跨语言集成的一个重要组成部分.通用类型系统主要执行以下功能: 建立一个支持跨语言集成.类型安全和高性能代码执行的框架. 提供一个支持完整实现多种编程语言的面向对象的模型. 定义各语言必须遵守的规则,有助于确保用不同语言编写的对象能…
CTS.CLS.CLR分别作何解释? 答:CTS:通用类型系统.CLS:通用语言规范.CLR:公共语言运行库.…
WinDBG中加载SOS和CLR 最近产品环境出现了部分服务器当机情况,虽然重启之后问题就不出现了.但本着彻底解决问题的态度,想要找到root cause.多次尝试Visual Studio失败(可能是代码惊醒了优化和签名)之后,决定使用WinDBG来调试.于是...灾难发生了. 想要一次性成功搭建测试环境,那得靠人品.看来我近来人品积累的不够,不断的有小问题出现.比如加载SOS和CLR,就让我不胜其烦.必须得记下来,分享出来,以节省大家的时间. 问题一:WinDBG分X86和X64两个版本 如…
最下层蓝色部分是.NET Framework的基础,也是所有应用软件的基础..NET Framework不是凭空出来的,实际上API,COM+,和一些相关驱动依然是它的基石..NET Framework只不过是对这些前辈们进行了系统的封装和扩充,在这个过程中,吸取了Java框架的很多经验.关于Win32 API与.NET Framework API的对应关系,可以参考Microsoft Win32 to Microsoft .NET Framework API Map 菜谱:除了蓝色部分以外,其…
1. IL/MSIL  (Microsoft Intermediate Language) 微软中间语言 (IL是MSIL的缩写,译为中间语言) 2. CTS  (Common Type System)通用类型系统 3. CLS  (Common Language Specification)公共语言规范 4. CLR  (Common Language Runtime)公共语言运行时(也有的叫公共语言运行库) 5. JIT  (Just in time)即时编译器  …
1.CTS(Common Type System)通用类型系统 CTS不但实现了COM的变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型扩展.任何以.NET平台作为目标的语言必须建立它的数据类型与CTS的类型间的映射.所有.NET语言共享这一类型系统,实现它们之间无缝的互操作.该方案还提供了语言之间的继承性.例如,用户能够在VB.NET中派生一个由C#编写的类.我们可以将CTS 看成是所有.NET 语言的superset (union),而符合CTS 的各种不同的语言,其实都只是CT…
既然要学.NET,就要先认识认识她,我不喜欢大段大段文字的东西,自己通过理解,画个图,来看看.NET的沉鱼落雁,闭月羞花之容. 最下层蓝色部分是.NET Framework的基础,也是所有应用软件的基础..NET Framework不是凭空出来的,实际上API,COM+,和一些相关驱动依然是它的基石..NET Framework只不过是对这些前辈们进行了系统的封装和扩充,在这个过程中,吸取了Java框架的很多经验.关于Win32 API与.NET Framework API的对应关系,可以参考M…
IL(Intermediate Language) 中间语言..Net 平台下不只有 C# 语言,还有 VB.Net.F# 等语言.IL 是程序最终编译的可执行二进制代码(托管代码),类似于 Java 中的 class 字节码文件,也叫中间语言,不同的语言最终都编译成标准的 IL(MSIL),这样在 .Net 平台下不同语言之间的程序集就可以互相调用了. CTS(Common Type System) 公共类型系统.由于 .Net 平台上的不同语言中的数据类型各不相同,比如整数类型在  VB.N…
1)CTS通用类型系统(Common Type System) CTS不但实现了COM的变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型扩展.任何以.NET平台作为目标的语言必须建立它的数据类型与CTS的类型间的映射.所有.NET语言共享这一类型系统,实现它们之间无缝的互操作.该方案还提供了语言之间的继承性.例如,用户能够在VB.NET中派生一个由C#编写的类.我们可以将CTS 看成是所有.NET 语言的superset (union),而符合CTS 的各种不同的语言,其实都只是CT…
CLR:公共语言运行时,就是所有.net语言写的程序的公共运行时环境,比如C#.VB.Net等语言写的程序需要运行在CLR上,然后CLR解析执行操作系统的相关指令,CLR是.net程序运行在操作系统的必备环境. 就像JAVA程序必须运行在JAVA虚拟机一样.只不过CLR运行所有.NET支持的语言开发的程序,比如C#.VB.Net等语言. CTS:公共类型系统,因为.NET支持C#.VB.NET.Ruby等语言,这些语言都有各自的类型,比如C#有int.string.long.uint等,VB也有…
cls主要用在类方法定义,而self则是实例方法. self, cls 不是关键字,完全可以使用自己写的任意变量代替实现一样的效果. 普通的实例方法,第一个参数需要是self,它表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用.而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身.>>> class A(object): def foo1(self):        print &qu…
直接在命令行中录入 pip install pythonnet 会有一个ssl错误提示 ...Could not fetch URL https://pypi.python.org/simple/pythonnet/: There was a problem confirming the ssl... 只好下载后再安装,下载地址 https://pypi.org/simple/pythonnet/ 我的python是2.7的32位,于是下载了 pythonnet-2.3.0-cp27-cp27m…
System.Decimal是非常特殊的类型.在CLR中,Decimal类型不是基元类型.这就意味着CLR没有知道如何处理Decimal的IL指令. 在文档中查看Decimal类型,可以看到它提供了一系列的public static方法,包括Add.Subtract.Multiply.Divide等.此外Decimal类型还为加减乘除提供了操作符重载方法. 编译使用了Decimal值的程序时,编译器会生成代码来调用Decimal的成员,并通过这些成员来执行实际的运算. 这意味着,Decimal值…
CTS:Common Type System 通用类型系统. 1.不仅可以把C#编译成.Net IL,还支持Basic.Python.Ruby等语言,甚至还支持Java.不同语言中的数据类型定义是不一样的,.Net中定义了通用的数据类型(CTS,Common Type System):String.Int16.Int32.Int64.Boolean.Double.通过转到定义可以看到这些都是类(结构体). 2. Int64→long.Int32→int.Int16→short.String→st…
最近产品环境出现了部分服务器当机情况,虽然重启之后问题就不出现了.但本着彻底解决问题的态度,想要找到root cause.多次尝试Visual Studio失败(可能是代码惊醒了优化和签名)之后,决定使用WinDBG来调试.于是...灾难发生了. 想要一次性成功搭建测试环境,那得靠人品.看来我近来人品积累的不够,不断的有小问题出现.比如加载SOS和CLR,就让我不胜其烦.必须得记下来,分享出来,以节省大家的时间. 问题一:WinDBG分X86和X64两个版本 如果你用的是32位的WinDBG,那…
1.self表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,将这个方法当成一个普通的函数使用. 2.cls表示这个类本身. >>> class A(object): def foo1(self): print "Hello",self @staticmethod def foo2(): print "hello" @classmethod def foo3(cls): print "hello&quo…
1.using关键字有什么用?什么是IDisposable? using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的Dispose方法,释放资源.using其实等价于try……finally,用起来更方便. 2.Assembly.Load("foo.dll"); 这句话是否正确? 错误,正确的应该是Assembly.Load("foo"); 或者Assembly…
题目来源于传智播客和各大互联网,复习.重新整理贴出来. 1.简述 private. protected. public. internal.protected internal 访问修饰符和访问权限 private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可以访问. public : 公共成员,完全公开,没有访问限制. internal: 当前程序集内可以访问. protected internal: 访问仅限于当前程序集或从包含类派生的类型.…
2.1.using关键字有什么用?什么是IDisposable? using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的Dispose方法,释放资源.using其实等价于try……finally,用起来更方便. 2.2.Assembly.Load("foo.dll"); 这句话是否正确? 错误,正确的应该是Assembly.Load("foo"); 或者Asse…
一.C# 理论 1.1.简述 private. protected. public. internal.protected internal 访问修饰符和访问权限 private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可以访问. public : 公共成员,完全公开,没有访问限制. internal: 当前程序集内可以访问. protected internal: 访问仅限于当前程序集或从包含类派生的类型. 不带修饰符的类是默认interna…
一.抽象与接口的区别: ,抽象(abstract): ()抽象类中可以有抽象方法,也可没有: ()抽象方法包含实现,也可以由子类实现: ()抽象类不能被sealed修饰,只能使用abstract关键字 ()抽象方法不能在抽象类外部声明: ()抽象类只能单继承: ()可以有虚方法(virtual),在不同的继承中,可以有不同的实现(需要override重写): .接口(interface): ()接口比抽象类更抽象: ()可以多继承: ()不包含方法的实现,只能由子类实现: 二.多态: 概念上:一…