《Inside C#》笔记(一) .NET平台
2019独角兽企业重金招聘Python工程师标准>>>
C# 基于.NET运行时,所以有必要首先对.NET以及C#与.NET平台的关系有一定的了解。
一 .NET平台
.NET背后的基本思想是将原本独立工作的设备、网络服务整合在一个统一的平台上,从而可以为用户提供丰富全面的解决方案。平时提到.Net一般默认指的是.Net Framework,但其实这只是.NET平台的一部分另外还包括.NET Building Block Service、.NET Device Software等一系列看不懂的东西。.Net Framework包含公共语言运行时Common Language Runtime(CLR)和.Net Framework类库两部分。可以把公共语言运行时理解成.NET平台的虚拟机,另外所有的.NET语言都包含了.Net Framework类库。这个类库涵盖了从文件读写到数据库操作再到XML、SOAP等等非常广泛的功能。
二 .NET Framework
a) CLR
CLR是.NET的核心,它是一个支持多种语言的程序同时运行、互相配合的实时环境。CLR支持多语言(C#, VB.NET,F#等)之间的互操作,那么它是怎么做到这一点的呢——因为这些语言都遵循了公共语言规范Common Language Specification(CLS)。一门语言只有遵守了CLS规范,才能创建运行在CLR上的应用程序。
关于CLR还有另一个重要的概念:托管代码。托管代码是在CLR的保护和管理下运行的代码,由CLR负责托管代码的内存分配、任务调度以及托管代码之间的通讯,这可以保证每个应用程序(即使是使用不同的语言编写的)都能够遵循统一的行为规范。
b) .Net Framework类库
.Net Framework类库对保证多语言间的互操作性具有重要意义。因为通过.Net Framework类库开发者能使用由CLR提供的统一接口。虽然其它许多语言都有自己的类库,比如C++,但.Net平台特殊的地方在于,编程语言之间的区别仅仅在于调用.Net Framework类库时,在语义上的区别。下面来对比C++和C#对“Hello, World”程序的实现:
C++:
C#版:
C++可以使用cout函数直接输出“Hello, World”,但C#要使用类库提供的WriteLine方法。C++本身包含一个负责字符处理、文件读写、屏幕显示等的类库,这可以认为是C++语言本身的功能,但C#等.NET平台下的语言却不具备这些功能,这些功能属于类库,离开类库,C#之类的语言基本上做不了任何事情。
c) IL码和JITters
.NET平台的语言编译器会将源码编译成IL码Microsoft Intermediate Language(MSIL), IL码本身也可以说是一种编程语言。在编译好的应用程序第一次被执行时,IL码才被编译成真正的机器码。大概过程如下
1. 用C#编写源码
2. 使用C#编译器(csc.exe)编译成IL码
3. 在编译好的应用程序被执行时,会使用实时编译器Just-In-Time Compiler(JITter)将IL码转换为机器码。
JITter只在某个方法被调用时才编译该方法,而且编译好的机器码会被缓存起来,只有C#源码发生变化时才重新编译机器码。
三 .NET类库的主要结构
学习资料:Inside C# by Tom Archer
转载于:https://my.oschina.net/u/2327858/blog/918547
《Inside C#》笔记(一) .NET平台相关推荐
- qcom vfe笔记(msm8996平台)
qcom vfe笔记(msm8996平台) tags : msm8996 camera 文章目录 qcom vfe笔记(msm8996平台) @[toc] 0 前言 1 camera smmu初始化 ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...
- [笔记]c++Windows平台代码规范
腾讯安全实验室 c/c++安全指南 google c++ 代码规范 google c++ 编码规范 C/C++代码规范(一)--文件结构.排版.命名规则 C/C++代码规范(二)--表达式.常量.函数 ...
- ios和linux共享的笔记软件,多平台同步笔记神器:Simplenote
2018-12-13,14:30创建文章. https://simplenote.com/ 今天,为大家推荐一款多平台(Windows.Mac.Linux.iOS.Android).即时同步的文本笔记 ...
- .Net 初步学习笔记之一——.Net 平台与.Net FrameWork框架的关系
.Net 包含两部分 .Net平台 和.Net FrameWork 框架 1..Net FrameWork框架包含于.Net平台. .Net FrameWork提供环境和支撑保证.Net平台运行. 2 ...
- OpenCL异构并行计算编程笔记(1):平台、设备与上下文
OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式.免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器.桌面 ...
- C# 学习笔记1 .NET平台,C#的重要概念
.NET平台构成的三个关键实体是: 1.CLR(公共语言运行库):为我们定位,加载,管理.NET类型,同时负责一些底层细节的工作,如内存管理,应用托管,处理线程,安全检查等,它包含了一个重要名为msc ...
- Apollo星火计划学习笔记|L1 Apollo平台安装(2021年9月更新)
系列文章目录 L1 Apollo平台安装 L2 CyberRT学习 L5 Routing简介 目录 系列文章目录 Apollo简介 Apollo安装 安装过程中遇到的问题. 综述文章 报名了百度apo ...
- Android学习笔记之Android平台架构和特性
一.Android的平台架构及特性 Android系统的底层建立在Linux系统之上,该平台由操作系统,中间件,用户界面和应用软件4层组成.采用一种被称为软件叠层的方式进行构建. 1.应用程序层(Sy ...
- cURL 学习笔记——结合yeelink平台
1.前言 curl是利用URL语法在命令行方式下工作的开源文件传输工具(来自百度百科).cURL是一种简单有效的工具,可以使用cURL工具进行WEB相关的调试开发工具,相对于Yeelink这样的云平台 ...
最新文章
- 使用深度神经网络进行自动呼叫评分(二)
- 前端必知必会--JSON.stringify()犀利的第三个参数
- android queue用法,GitHub - rygz146/TQueue: Android 可以任意切换线程的任务队列, TQueue
- SecureCRT向多个tab窗口发命令
- 01串(51Nod-1391)
- 基于android的考勤管理系统,基于Android的考勤管理系统的设计与实现
- 《深度学习笔记》——初识PyTorch的学习笔记
- linux下web目录权限设置
- 模2运算_模二除法和CRC循环冗余校验
- c语言实验内容设计思路,c语言实验报告书3.doc
- 坐标3度带与6度带的知识(转载)
- android多开技术,多开常见配置 - 技术交流 - 逍遥安卓论坛 - Powered by Discuz!
- 杂文-61儿童节-太阳的距离
- LeetCode #780 - Reaching Points
- 网络安全渗透技术(入门视频课程)-李云鹏-专题视频课程
- MATLAB水箱液位模糊控制仿真程序
- (论文解读)High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks
- ubuntu8.10显卡驱动安装(8500gt)
- 英语口语练习十三之It's up to... (由……来决定)用法
- 算法的本质是什么?程序员如何学好算法?
热门文章
- 反向传播算法BP公式推导
- linux下安装xgboost
- cnc加工中心保养表_【UG编程】五个CNC加工中心的编程加工小技巧!
- python 直线检测_python hough变换检测直线的实现方法
- tensorflow学习笔记(1):使用入门
- android studio for android learning (十六) support-annotations简介
- C#WPF多线程控件访问问题
- LaTeX 引用表格、照片、公式的时候自动添加 table,fig,equ
- (详细带你分析错误):No property 属性名 found for type 类名,总结了其他解决办法
- ConcurrentHashMap源码分析(保姆式讲解):Put、扩容原理详解 博主可答疑