一、.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):

三、名词解释

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

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就是一种能在各种语法中通用的一种准则。按照这个准则生成的程序集可以在其他语言中调用。

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

初步了解.net的更多相关文章

  1. 移动端之Android开发的几种方式的初步体验

    目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...

  2. CSharpGL(29)初步封装Texture和Framebuffer

    +BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...

  3. Android自定义View初步

    经过上一篇的介绍,大家对于自定义View一定有了一定的认识,接下来我们就以实现一个图片下显示文字的自定义View来练习一下.废话不多说,下面进入我们的正题,首先看一下我们的思路,1.我们需要通过在va ...

  4. 初步认识Node 之Node为何物

    很多人即便是在使用了Node之后也不知道它到底是什么,阅读完本文你应该会有一个初步的.具体的概念了.    Node的目标 提供一种简单的构建可伸缩网络程序的方法.那么,什么是可伸缩网络程序呢?可伸缩 ...

  5. [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)

    [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date  周六 10 一月 2015 By 钟谢伟 Category website develop ...

  6. 基于C/S架构的3D对战网络游戏C++框架 _05搭建系统开发环境与Boost智能指针、内存池初步了解

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  7. Azure底层架构的初步分析

    之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...

  8. CozyRSS开发记录14-RSS源管理初步完工

    CozyRSS开发记录14-RSS源管理初步完工 1.添加源的响应 DialogHost.Show有几个版本的重载,加一个DialogClosingEventHandler参数.我们让添加源对话框的添 ...

  9. 初步了解CPU

    了解CPU By JackKing_defier 首先说明一下,本文内容主要是简单说明CPU的大致原理,所需要的前提知识我会提出,但是由于篇幅我不会再详细讲解需要的其他基础知识.默认学过工科基础课. ...

  10. Windows多线程多任务设计初步(转)

    Windows多线程多任务设计初步 [前言:]当前流行的Windows操作系统,它能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程 ...

随机推荐

  1. 【干货】.NET WebApi HttpMessageHandler管道

    消息拦截器是一个类,接收 HTTP request并返回 HTTP response,Message handler 继承自抽象类 HttpMessageHandler,那么学习消息过滤器之前你应该了 ...

  2. JS 中 原生方法 (三) --- Date 日期

    本文也说主要阐释了 Javascript 中的基础类型和 引用类型的自带方法,那么熟悉的同学又可以绕道了 总是绕道,真是羞耻悳boy 当然 本文阐述的主要类容 from MDN ( zh-cn ) D ...

  3. Chapter 5 Blood Type——7

    "You say that a lot," I noted, trying to ignore the sudden trembling in my stomach and kee ...

  4. leetcode — triangle

    /** * Source : https://oj.leetcode.com/problems/triangle/ * * * Given a triangle, find the minimum p ...

  5. ansible学习系列1-ansible简介

    1.ansible简介 官方说明:Ansible is an IT automation tool. It can configure systems, deploy software, and or ...

  6. Java开发知识之Java的继承多态跟接口*

    Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...

  7. 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Caching; usi ...

  8. C指针和数组的关系详解

    1.C中数组和指针的关系 对于任意类型的数组arr,对于同类型的指针类型parr(确切一点,可以假设类型为int,即int arr[], *parr).它们之间有如下"内幕": 1 ...

  9. Aooms_微服务基础开发平台实战_003_配置文件与简单的web环境搭建

    一.前言 本篇文章介绍两个重点 (1) 工程核心配置文件application.yml (2) 如何在一个标准的的SpringCloud工程上构建起一个基本的web结构 二.配置文件applicati ...

  10. ElasticSearch入门点滴

    这是Elasticsearch-6.2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 ...