首页 技术 正文
技术 2022年11月8日
0 收藏 438 点赞 1,601 浏览 1566 个字

本篇已收录至《C#图解教程》读书笔记目录贴,点击访问该目录可获取更多内容。

一、在.NET之前的编程世界

  C#语言是在微软公司的.NET框架上开发程序而设计的,首先作者给大家纠正了一下C#的正确发音:See Sharp(而不是很多人说的什么C井之类的,每次听到C井我都只能呵呵一笑)。

  1.1 20世纪90年代末的Windows编程

  这时大多数程序员使用VB、C或C++,一些C/C++程序员使用纯Win32API,但纯Win32API不是面向对象的,而且使用它的工作量很大,比MFC还大。大多数程序员在使用MFC(Microsoft Foundation Class,微软基础类库),MFC是面向对象的,但是它却不一致,并逐渐变得陈旧。其他的程序员开始转向了COM(Component Object Model,对象组件模型),COM相对前两者概念简单,但它的实际代码复杂,并且需要很多丑陋的、不雅的底层基础代码。

  1.2 下一代平台服务的目标

  执行环境的目标:安全、多平台、性能;

  开发环境的目标:面向对象、一致的编程环境、使用行业标准进行通信、简化的部署等;

二、.NET时代来临

  2002年,微软发布了.NET框架的第一个版本,.NET框架是一种比MFC和COM编程技术更一致并面向对象的环境。

  2.1 .NET框架的组成

  .NET框架由三部分组成,如下图所示。

《C#图解教程》读书笔记之一:C#和.NET框架  (1)编程工具:IDE、编译器、调试器、网站开发服务端技术(ASP.NET,WCF等);

  (2)执行环境—CLR(公共语言运行库):内存管理、垃圾回收、即时编译等;

  (3)BCL(基类库):在.NET框架中使用的一个大的类库,也可以在程序中使用;

  2.2 大大改进的编程环境

  面向的对象的开发环境、自动垃圾收集、互操作性、不需要COM等;

三、全新的编译过程

  3.1 编译成CIL(公共中间语言)

  .NET语言的编译器接受源代码文件,并生成名为程序集程序集要么是可执行的,要么是DLL)的输出文件。下图阐述了这个过程。《C#图解教程》读书笔记之一:C#和.NET框架

  3.2 编译成本机代码

  程序的CIL直到它被调用执行时才会被编译成本机代码,在运行时,CLR执行如下图所示的步凑。

《C#图解教程》读书笔记之一:C#和.NET框架

  这里有两个名词需要理解:

  (1)托管代码:使用.NET框架编写的代码成为托管代码(Managed Code),需要CLR。

  (2)非托管代码:不在CLR控制下运行的代码,比如Win32 C/C++ DLL,称为非托管代码(Unmanaged Code)。

四、核心组件—CLR:一个不辞辛劳的清洁工

  毫无疑问,.NET框架的核心组件是CLR(公共语言运行时),它在操作系统的顶层,负责管理程序的执行

《C#图解教程》读书笔记之一:C#和.NET框架

五、基础结构—CLI:一起长大的约定,那样清晰

  过去,各种不同语言的类型特征(例如,组成整数的位数对于不同的语言和平台就有很大差别)不一致,缺乏统一性。为了使不同语言编写的程序和库能够一起有序协作,必须要有一组标准

  CLI就是这样的一组标准,它把所有.NET框架的组件连接成一个内聚的、一致的系统。它展示了系统的概念和架构,并详细说明了所有软件都必须坚持的规则和约定。CLI的组成如下图所示:

《C#图解教程》读书笔记之一:C#和.NET框架

  在CLI的众多组成部分中,最重要的是CTS和CLS。CTS(公共类型系统)定义了那些在托管代码中一定会使用的类型的特征,而CLS(公共语言规范)详细说明了一个.NET兼容语言的规则、属性和行为。

六、本章思维导图

《C#图解教程》读书笔记之一:C#和.NET框架

附件

  思维导图(jpg、pdf与mmap源文件):http://pan.baidu.com/s/1jG5JRpG

作者:周旭龙

出处:http://www.cnblogs.com/edisonchou/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,033
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,520
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,368
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,148
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,781
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,862