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平台相关推荐

  1. qcom vfe笔记(msm8996平台)

    qcom vfe笔记(msm8996平台) tags : msm8996 camera 文章目录 qcom vfe笔记(msm8996平台) @[toc] 0 前言 1 camera smmu初始化 ...

  2. [Openwrt 项目开发笔记]:Openwrt平台搭建(一)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...

  3. [笔记]c++Windows平台代码规范

    腾讯安全实验室 c/c++安全指南 google c++ 代码规范 google c++ 编码规范 C/C++代码规范(一)--文件结构.排版.命名规则 C/C++代码规范(二)--表达式.常量.函数 ...

  4. ios和linux共享的笔记软件,多平台同步笔记神器:Simplenote

    2018-12-13,14:30创建文章. https://simplenote.com/ 今天,为大家推荐一款多平台(Windows.Mac.Linux.iOS.Android).即时同步的文本笔记 ...

  5. .Net 初步学习笔记之一——.Net 平台与.Net FrameWork框架的关系

    .Net 包含两部分 .Net平台 和.Net FrameWork 框架 1..Net FrameWork框架包含于.Net平台. .Net FrameWork提供环境和支撑保证.Net平台运行. 2 ...

  6. OpenCL异构并行计算编程笔记(1):平台、设备与上下文

    OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式.免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器.桌面 ...

  7. C# 学习笔记1 .NET平台,C#的重要概念

    .NET平台构成的三个关键实体是: 1.CLR(公共语言运行库):为我们定位,加载,管理.NET类型,同时负责一些底层细节的工作,如内存管理,应用托管,处理线程,安全检查等,它包含了一个重要名为msc ...

  8. Apollo星火计划学习笔记|L1 Apollo平台安装(2021年9月更新)

    系列文章目录 L1 Apollo平台安装 L2 CyberRT学习 L5 Routing简介 目录 系列文章目录 Apollo简介 Apollo安装 安装过程中遇到的问题. 综述文章 报名了百度apo ...

  9. Android学习笔记之Android平台架构和特性

    一.Android的平台架构及特性 Android系统的底层建立在Linux系统之上,该平台由操作系统,中间件,用户界面和应用软件4层组成.采用一种被称为软件叠层的方式进行构建. 1.应用程序层(Sy ...

  10. cURL 学习笔记——结合yeelink平台

    1.前言 curl是利用URL语法在命令行方式下工作的开源文件传输工具(来自百度百科).cURL是一种简单有效的工具,可以使用cURL工具进行WEB相关的调试开发工具,相对于Yeelink这样的云平台 ...

最新文章

  1. 使用深度神经网络进行自动呼叫评分(二)
  2. 前端必知必会--JSON.stringify()犀利的第三个参数
  3. android queue用法,GitHub - rygz146/TQueue: Android 可以任意切换线程的任务队列, TQueue
  4. SecureCRT向多个tab窗口发命令
  5. 01串(51Nod-1391)
  6. 基于android的考勤管理系统,基于Android的考勤管理系统的设计与实现
  7. 《深度学习笔记》——初识PyTorch的学习笔记
  8. linux下web目录权限设置
  9. 模2运算_模二除法和CRC循环冗余校验
  10. c语言实验内容设计思路,c语言实验报告书3.doc
  11. 坐标3度带与6度带的知识(转载)
  12. android多开技术,多开常见配置 - 技术交流 - 逍遥安卓论坛 - Powered by Discuz!
  13. 杂文-61儿童节-太阳的距离
  14. LeetCode #780 - Reaching Points
  15. 网络安全渗透技术(入门视频课程)-李云鹏-专题视频课程
  16. MATLAB水箱液位模糊控制仿真程序
  17. (论文解读)High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks
  18. ubuntu8.10显卡驱动安装(8500gt)
  19. 英语口语练习十三之It's up to... (由……来决定)用法
  20. 算法的本质是什么?程序员如何学好算法?

热门文章

  1. 反向传播算法BP公式推导
  2. linux下安装xgboost
  3. cnc加工中心保养表_【UG编程】五个CNC加工中心的编程加工小技巧!
  4. python 直线检测_python hough变换检测直线的实现方法
  5. tensorflow学习笔记(1):使用入门
  6. android studio for android learning (十六) support-annotations简介
  7. C#WPF多线程控件访问问题
  8. LaTeX 引用表格、照片、公式的时候自动添加 table,fig,equ
  9. (详细带你分析错误):No property 属性名 found for type 类名,总结了其他解决办法
  10. ConcurrentHashMap源码分析(保姆式讲解):Put、扩容原理详解 博主可答疑