CLS/CLR、c#(等语言)、托管、元数据、程序集 CLR学习第二课

一、名称解释:

CLS:common language specilication:通用语言规范;

CLR:common language Runtime 公共语言运行时。

托管代码:编译的代码直接clr等一层一层的进行 代码编译(C#--C#编译器--CLR(把它编译为IL)--IL--本地cpu可执行代码)并进行类型安全验证、资源释放等操作。

非托管代码:c#语言生成的代码直接由cpu执行,所以需要自己处理资源释放、类型安全检查、等一系列的操作。

元数据:包含程序运行所需的一切资源信息,元数据中包含3个表:定义表(Def)、引用表(Ref)、清单表。

其中定义表、引用表:中分别包含了 模块(ModuleRef、MouduleDef)、类型(type)、方法(Method)、字段(Filed)、参数(Param)、属性、事件的引用表和定义表(都是在他们后面加Def或者ref)。

清单表:一组元数据的集合,包含程序集中一部分文件名称、还描述了程序集的版本、语言、发布者、共有打出类型、以及程序所需的所有文件;

清单元数据:AssemblyDef、FileDef、MainfestResourceDef(包含程序集的所以资源条目,和一个该资源在资源文件或者流在FileDef表中的索引,如果该资源不是单独文件则把它嵌入到PE文件中)、ExportTypesDef(程序集中所有的PE模块导出的每一个共有类型都在其中;还包括了类型名称,一个FileDef表中的引用,和一个TypeDef表的索引,清单PE文件中的类型不会在该表中)。清单为程序使用者和其各个部分直接提供了一个层接关系,实现程序集自描述。程序集清单知道该清单所包含的文件是一个程序集的,但是其他程序集却不知道他们是一个程序集。

codeBase:在配置文件中定义;保存应用程序需要下载的程序集文件,其中包含得有需要下载程序集的url。当程序加载一个程序集时,CLR首先获得codebase元素的地址,然后在本地机器下缓存中看是否存在该文件,如果存在则加载,不存在抛出FileNotFoundException异常。

程序集(exe、dll):定义了可重用的类型、版本号、安全相关的信息。

二、vs支持很多语言,所有的语言经过自己的编译器处理,clr处理,最后生成IL代码。也就是说所有的语言建立在同一个基础上的,所有可以实现不同语言生成的dll、或者exe文件之间公用,也方便了代码的反编译。但是公用exe或者dll文件的标准是他们必须遵循CLS规则。如vb中不区分大小写、c#中区分、c++中不支持无符号类型等。所有在写能让其他语言调用的代码时必须遵循cls规则,统一原则。才可以相互调用,可以给代码设置属性,让其检查当前语言编写规范是否符合cls规则(方法在类上方声明属性:assembly:[CLSCompliant(true))] 编译器就会自动检查上方cls兼容。

转载于:https://www.cnblogs.com/gowhy/archive/2011/04/01/2001949.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作为史上最疯狂的科学家,特斯拉提出过哪些惊世骇俗的设想

全世界只有3.14 % 的人关注了爆炸吧知识尼古拉特斯拉是有史以来最疯狂的科学家之一,不管你认为他是天才还是疯子,都无法否认他的才华和想象力。特斯拉在他的时代提出了许多天才的发明和想法,其中一些直到今天都被认为是不切实际或极其危险的。…

新电脑怎么测试软件,鲁大师如何测试新电脑 鲁大师测新机方法

核心提示:鲁大师如何测试新电脑呢?快来看看吧。1、首先需要先打开鲁大师这款软件,进入到主界面,在看新机之前有需要注意的几点,如果电脑的拥有者之前本来就是通过二手的渠道购买的电脑,那电脑本身就是二手的…

java 类的加载、连接和初始化

JVM和类 调用Java命令运行Java程序时,该命令将会启动一条Java虚拟机进程,不管该Java程序启动了多少条线程,创建了多少个变量,它们都处于该Java虚拟机进程里,共享该JVM进程的内存区。当系统出现以下几种情况时&#xff…

讯雷使用小技巧

迅雷是大家平时用得最多的下载软件,但是很多人可能平时只是简单地使用。不过,有时经验是十分有用的。养成使用迅雷的良好习惯,相当有用。本文主要介绍使用迅雷的一些经验,在此跟大家分享。一、尽量不将迅雷安装于系统盘 大家在安装…

机器人等级考试一级教具_全国青少年机器人技术等级考试(一级):基本结构...

​机器人技术,是衡量一个国家科技创新和高端制造业水平的重要标志。大力推动机器人技术创新与行业发展,关键在于人才的培养。少年强,则国强。机器人作为信息化教育的新载体,不仅要让更多中国青少年了解机器人的发展,掌…

react dispatch_React测试的那些事(三) React Hook 测试实例

useReducer测试 useReducer 首先需要在组件中用 actions 和 reducers ,代码如下。Reducerimport * as ACTIONS from ./actionsexport const initialState {stateprop1: false, }export const Reducer1 (state initialState, action) > {switch(action.type) {…

java中的堆和栈

1.简单的说:Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过…

Blazor 组件库开发指南

翻译自 Waqas Anwar 2021年5月21日的文章 《A Developer’s Guide To Blazor Component Libraries》 [1]Blazor 的核心是组件,我们创建不同类型的组件并在整个项目中重用它们。没有人想重复造轮子,因此创建一个可重用的 Blazor 组件库始终是一个好主意&a…

今年大学毕业照画风太清奇.....我忍不住笑出了声!

全世界只有3.14 % 的人关注了爆炸吧知识转眼又到毕业季,今年毕业季因疫情有些不一样。PS云毕业照、云答辩、云面试,不少毕业生调侃自己是“云毕业”。最近不少大学生在网上哀嚎,原因是学校要他们上交照片,以便制作毕业照&#xff…

exec和sp_executesql

sqlserver中的exec和sp_executesql都能执行动态的sql语句和存储过程,但exec用法较为简单,不能带参数,也没有返回参数。 sp_executesql则显得功能更加完善,可以用输入参数和输出参数,下面这个例子记录了sp_executesql的…

计算机高效课堂建设,打造职业学校计算机高效课堂.doc

精品文档(可编辑) 值得下载打造职业学校计算机高效课堂近年来,随着社会的不断发展和经济的快速增长,职业教育越来越受到重视,很多企业在招聘时看重的是学生的专业技能,因此,职业学校须高度重视学校的教学质量&#xff…

彻底解决.net中编码问题的心得

本文将解决.net(c#)系统中因编码转换而出现的乱码问题。最近的系统与字符集打交道,字符集的编码是一个非常头疼的事情,不小心就会造成乱码。深入学习编码知识,可以使我们在写程序时少走弯路。 要实现的功能:将一大堆网页文件批量导…

sql语句查询结果合并union 和union all用法

--合并重复行select * from Aunionselect * from B --不合并重复行select * from Aunion allselect * from B 按某个字段排序--合并重复行select *from (select * from Aunionselect * from B) AS Torder by 字段名 --不合并重复行select *from (select * from Aunion allselec…

vc 控制台添加托盘显示_开源:ESP8266读DHT11温湿度,小程序实时显示

第一、原理讲解原理简述:利用发布订阅模式。第一步,先读取DHT11温湿度数值,第二步,新建主题,然后esp8266往这个主题发送消息,第三步。小程序通过http API接口获取数据。小程序控制原理:esp8266订…

python if elif else_python:通讯录(字典+while+if/else)

Hello,World.我是很久很久很久都没有更新的土土[看]但是即便如此呢我这个人也不喜欢拖拖拉拉的东扯西扯一上来咱们就来讲讲正题勿怪[笑哭]1.使用字典构建通讯录mydic{}//定义一个字典2.使用whlie循环判断是否继续进行while True://循环开始break//循环结束3.使用if/elif/else语…

有BUG!!!慎用default文本

前言下面这段代码,你能发现什么问题吗?public static int? Test1(string str) {return str switch{"A" > 1,"B" > 2,"C" > 3,_ > default,}; } public static int? Test2(string str) {switch (str){case &…

老师看完都吐血的五道题

全世界只有3.14 % 的人关注了 爆炸吧知识 老师看完都要吐血的五道题哈哈哈哈哈虽然小编觉得最后一答完全没问题哈哈哈图片来源于网络,如有侵权请联系删除。你点的每个在看,我都认真当成了喜欢

JDK5.0新特性--可变参数

2019独角兽企业重金招聘Python工程师标准>>> /*** 可变参数*/ public class VariableParamater {/*** 统计2个或多个数的和*/public static void main(String[] args) {//计算2个数的和sum(10,15);/** 问题:如果要计算3个数、4个数、5个数或n个数的和&am…

中职计算机教师考核工作总结,中职计算机教师工作总结.doc

中职计算机教师工作总结中职计算机教师工作总结一个学期以来,认真真学习贯彻党的教育方针政策策,落实上级领导的工作部署署,以重实际,抓实事,求实实效为教学工作的基本原则,,以培养学生创新精神…

爱情二十九课,驾驭爱情

每个人都期待驾驭爱情,都希望让恋人终生痴情于自己,也希望爱情保持新鲜,但爱情是一种非常飘渺的心理因素,能驾驭爱情的技巧是什么呢……大部分人常用的战术有3种: 第一种 用内疚感来驾驭 在发现爱情温度下降时&#xf…