欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

初步了解.net

程序员文章站 2022-12-16 13:57:07
一、.net和C#是什么关系 .net是一个程序运行的平台,它是c#,vb,F#等程序运行的平台,为这些语言提供基础类库、公共语言运行时(CLR)等相关支持。 C#是支持.net的一种编程语言。.net编程语言有很多种,常用的是C#,还有Visual Basic、C++/CLI、Eiffel、F#、 ......

一、.net和c#是什么关系

.net是一个程序运行的平台,它是c#,vb,f#等程序运行的平台,为这些语言提供基础类库、公共语言运行时(clr)等相关支持。

c#是支持.net的一种编程语言。.net编程语言有很多种,常用的是c#,还有visual basic、c++/cli、eiffel、f#、ironpython等很多种。

visual studio是开发工具,支持这些编程语言开发相应的.net程序。

二、编译与执行

编译是把编程语言编写的源代码转成cil(中间语言)并生成程序集的过程。执行是程序执行时clr(公共语言运行时)捕获cil后,激活jit编译器,将cil编译成机器语言的过程。上一张抄来的图(https://blog.csdn.net/lidandan2016/article/details/77868043):

初步了解.net

三、名词解释

各种缩写,名词太多了,一直弄混,找一些经常看见的记录下。

1、clr(common language runtime,公共语言运行库):clr是一个运行时环境,功能主要包括内存管理,程序集加载,异常管理,系统资源回收等。

2、托管代码:由clr管理运行的代码。

3、非托管代码:与clr无关的代码。

4、gc(garbage collector,垃圾收集器):gc只能回收托管资源(由clr管理的存在于托管堆上的称为托管资源)。gc的运行不需要人工干预,clr会在需要的时候调用gc进行垃圾回收。gc遍历托管堆上的对象,将不能回收的对象做上标记,最后没有标记的对象作为垃圾释放掉,释放后不连续的内存空间会压缩成连续的内存空间。

5、cil(common intermediate lauguage,公共中间语言):与il,msil(微软中间语言)是一个概念,源代码在编译过程中被翻译成的一系列指令集。cil是底层平台无关的,clr使用不同cpu的即时编译器编译cil为相应的机器代码。

6、元数据:描述数据的数据。描述了文件中定义的类型以及每个类型的成员,比如某个字段的访问权限、字段拥有者等信息。

7、程序集清单:本身也是一种元数据,描述程序集自身。记录了关联的外部程序集、程序集版本、版权信息等。发布的程序运行提示哪个dll版本不匹配就是路径下的dll文件版本与清单中记录的版本不一致。

8、程序集:由编译成生成的dll、exe文件。包含cil、元数据、清单的一种集合,是可以被clr加载并运行的一堆数据集。(vs里创建的一个新项目,比如一个类库,编译后就被打包成与类库名称相同的一个dll,这就是一个程序集)。

9、cts(common type system,通用类型系统):一个正式的规范,规定了类型必须如何定义才能被clr加载。主要是类、结构、枚举、委托、接口五中类型。system.int32、system.object等是内建的cts数据类型。平时用的int ,string这些关键字是这些类型的一种代号。

10:cls:一套规则,每种编程语言都有各自的语法,不同的语言功能,cls就是一种能在各种语法中通用的一种准则。按照这个准则生成的程序集可以在其他语言中调用。

个人理解,后续慢慢补充完善。