初步了解.net
一、.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的更多相关文章
- 移动端之Android开发的几种方式的初步体验
目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...
- CSharpGL(29)初步封装Texture和Framebuffer
+BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...
- Android自定义View初步
经过上一篇的介绍,大家对于自定义View一定有了一定的认识,接下来我们就以实现一个图片下显示文字的自定义View来练习一下.废话不多说,下面进入我们的正题,首先看一下我们的思路,1.我们需要通过在va ...
- 初步认识Node 之Node为何物
很多人即便是在使用了Node之后也不知道它到底是什么,阅读完本文你应该会有一个初步的.具体的概念了. Node的目标 提供一种简单的构建可伸缩网络程序的方法.那么,什么是可伸缩网络程序呢?可伸缩 ...
- [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)
[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date 周六 10 一月 2015 By 钟谢伟 Category website develop ...
- 基于C/S架构的3D对战网络游戏C++框架_05搭建系统开发环境与Boost智能指针、内存池初步了解
本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...
- Azure底层架构的初步分析
之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...
- CozyRSS开发记录14-RSS源管理初步完工
CozyRSS开发记录14-RSS源管理初步完工 1.添加源的响应 DialogHost.Show有几个版本的重载,加一个DialogClosingEventHandler参数.我们让添加源对话框的添 ...
- 初步了解CPU
了解CPU By JackKing_defier 首先说明一下,本文内容主要是简单说明CPU的大致原理,所需要的前提知识我会提出,但是由于篇幅我不会再详细讲解需要的其他基础知识.默认学过工科基础课. ...
- Windows多线程多任务设计初步(转)
Windows多线程多任务设计初步 [前言:]当前流行的Windows操作系统,它能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程 ...
随机推荐
- 了解 HTTPS,读这篇文章就够了
今天接到个活儿,让我科普 HTTPS .讲 HTTP 我都“方”,想要通俗易懂的说完 HTTPS, 我有点“圆”.在讲什么是 HTTPS 之前,我们先来看个漫画. △ 图片来源于阮一峰的网络日志 ...
- 厉害—Ansible管理windows集群
最近公司新项目需要安装400+windows server 2012系统的工作站,想着怎么能像linux下运用ansible批量管理,linux就很简单了有ssh服务 但是下却没这么简单,但还是有办法 ...
- Solr 10 - SolrCloud集群模式简介 + 组成结构的说明
目录 1 什么是SolrCloud 2 SolrCloud的结构 2.1 物理结构 2.2 逻辑结构 2.2.1 Collection(集合) 2.2.2 Core(内核) 2.2.3 Shard(分 ...
- 设计模式总结篇系列:装饰器模式(Decorator)
在面向对象设计过程中,经常会遇到需要对现有的类的功能进行扩展,通常我们可以采用继承的方式.例如老罗最近在做手机,一开始需要定义手机所应具有的功能: interface Phone{ public vo ...
- python基础3--函数
1.函数定义 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数 ...
- Java设计模式总结
什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.通过对这些设计模式的合理使用能够是我们的系统更加的健壮. 六大设计原则 ...
- VS2017 启动调试报错无法启动程序 当前状态中非法
昨天还可以使用,今天就莫名报了这个错误,百度了一下: 1. 第一种尝试方法是右击解决方案中的项目(图标有带球的),打开属性选择“WEB”选项,修改特定页为Home,结果还是报错. 2.我又关闭Wind ...
- Entity Framework 框架
微软官方提供的ORM技术的实现就是EF(Entity Framework)框架.EF的模式有三种分别是:Database First 数据库先行 ,Model First 模型先行 , Code F ...
- C#单例模式的几种实现方式
一.多线程不安全方式实现 public sealed class SingleInstance { private static SingleInstance instance; private S ...
- 微信小程序组件minui在mac系统的使用注意事项
1.mac系统使用npm 安装组件的时候,一定要注意mac系统的终端一定要用root用户操作. 具体的命令如下:sudo -i,然后提示输入系统的密码就进入了root操作用户. 2.然后就根据minu ...