C#高级编程《第7版》读书笔记(1-3章)
时间:2025-07-08
时间:2025-07-08
本文档基于C#高级编程《第7版》为个人读书笔记,仅供个人学习参考,不可用于任何商业用途。本文档主要学习.Net体系结构,核心C#, 对象与类型
本文档是学习《C#高级编程》第七版的读书笔记,对于一些资源参考了网络相关文章。本文档仅供个人学习,不可用于商业行为。
第Ⅰ部分 部分 C#语言C#语言 语言
第一章 第一章 .NET体系结构
1. 什么是 .NET Framework?
2. C#语言和 .NET Framework关系是什么? 3. 什么是公共语言运行库?
4. 什么是托管代码? 其与非托管代码有什么不同? 他们执行效率如何? 5. IL是什么? 6. 什么是程序集?
7. 值类型和引用类型的区别?
答1:.NET Framework是用于Windows的新托管代码编程模型。 .NET Framework又称 .Net框架。一个致力于敏捷软件开发(Agile software developmentAgile software development)、快速应用开发(Rapid Rapid Agile software development
application development)、平台无关性和网络透明化的软件开发平台。 .NET框架是以application development
一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language RuntimeCommon Language Runtime)为Common Language Runtime基础,支持多种语言(C#、VB、C++、Python等)的开发。
答2:C#本身只是一种语言,尽管它是用于生成面向.NET环境的代码,但它本身不是.net的一部分。.net支持的一些特性,C#并不支持。而C#语言支持的另一些特性,.net却不支持。 但C#语言是和.NET一起使用的,所以如果要使用C#高效地开发应用程序,理解Framework就非常重要。
答3:.NET Framework的核心是其运行库的执行环境, 称为公共语言运行库公共语言运行库( CLR) 或 .NET运行库。
CLR和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离. 在 .NET中,编译分为两个阶段: (1) (1) 把源代码编译为Microsoft中间语言(IL)。 (2) CLR把IL编译为平台专用的代码。 (2)
CLR带有三个不同的JIT编译器 (1)(1) 缺省的编译器---主编译器 (2)(2) PREJIT,它建立在主JIT编译器之上 (3)(3) ECONOJIT,在并不充分优化的前提下,它能够快速完成IL代码到本地码的转(3)
换,编译速度与运行速度都非常快。
答4: .Net Framework 是由彼此独立又相关的两部分组成:CLRCLR 和 类库, CLR是它为我类库
本文档基于C#高级编程《第7版》为个人读书笔记,仅供个人学习参考,不可用于任何商业用途。本文档主要学习.Net体系结构,核心C#, 对象与类型
们提供的服务,类库是它实现的功能.
.NET的大部分特性----垃圾收集,版本控制,线程管理等,都使用了CLR提供的服务。
当你为 .Net Framework 编译源代码的时候,得到的目标代码不是CPU能识别的机器指令,而是一种叫做"微软中间语言(MSIL,或简称为IL的代码)"的新语言. CLR 提供了一个实时编译器, 用来把 IL 代码编译为本机机器代码. 这样一来,CLR 能够使代码变得可移植, 因为 .NET 应用程序的源代码必须被编译为 IL 代码,这些IL代码可以运行在任何提供CLR 服务的平台上. 从CLR 的角度来看,所有的语言都是平等的,只要有一个能生成 IL代码的编译器就行, 这就确保了各种语言的互操作性. 为CLR而编写以及使用CLR服务的代码叫"托管代码托管代码",而那些未使用CLR服务的代码托管代码(也就是你多年以来一直编写的代码)叫"非托管代码非托管代码". 非托管代码
讨论到C++在 .NET托管环境中的应用,由于C++不是为.NET平台设计的语言,所以,微软需要对C++作一些扩充,这就引入了"托管扩展"这一概念,它允许我们在C++项目中使用.NET Framework,如果有下列开发需要,就必须使用托管扩展: 1. 将现有的C++代码移植到托管环境中 2. 在C++代码中访问 .NET Framework类 3. 通过.NET语言访问现有的C++代码 程序的加载过程: (1)(1) 这个函数在一个叫做MSCorEE .dll的动态链接库文件中,当安装了.net框架时就会被复制在系统目录下。 (2)(2) 系统会根据托管程序PE文件中的信息找到这个DLL, (3)(3) 然后通过MSCorEE .dll的PE文件信息找到这个_CorExeMain函数的入口地址, (4)(4) 然后修改刚才的JMP指令要跳转的地址,从而将控制跳转到了_CorExeMain这个函数里面去。 (5)(5) 然后,在这个函数里面,CLR被启动了,并做了若干的初始化工作, (6)(6) 然后再通过托管程序的CLR表头找到托管程序的入口地址,并将控制跳转到这里, (7)(7) 于是托管程序开始运行 注:Visual C++可以创建非托管程序。当你创建一个项目,并且选择名字以MFC,ATL或者Win32开头的项目类型,那么这个项目所产生的就是非托管程序 当你创建一个托管的 C++ 程序, 那么构建出来的是一个中间语言程序集和一个扩展名为 .exe 的可执行文件。 当你创建一个MFC 程序, 构建出来是一个 Windows 原生代码的可执行文件, 这个文件的扩展名也是 .exe。这两个文件的内部结构是完全不一样的。 【参考】浅析托管与非托管C++代码
http://www.77cn.com.cn/view/maguschen/23927?from_com 【参考】托管代码与非托管代码的执行效率比较
http://www.77cn.com.cn/blog/visit_article_comment.jsp?article_id=1871&u_id=05070201
http://www.77cn.com.cn/housisong/article/details/1486504 【 …… 此处隐藏:12522字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:历年高校硕博入学考试真题总结