[读书笔记]C#学习笔记一: .Net Framwork
前言:
一次偶然的机会 在园子里看到@Learning hard 出版的一本书: <<C#学习笔记>>, 然后买来 一直到现在读完, 感觉很不错, 适合入门, 书中内容是从C#1.0 到5.0. 很全面也很细致.
下面就来分享一下这本书中自己感觉需要记录的一些东西.
这里先贴上@Learning hard本人在博客园的主页: http://www.cnblogs.com/zhili/
以及本书中的一些知识点: http://www.cnblogs.com/zhili/category/421637.html
一: .Net Framework
1.1.Net Framework 就是应用程序运行时的执行环境, 为应用程序的执行提供一下几种服务:
>全面的类库
>内存管理
>通用类型系统
>开发结构和技术
>语言互操作性
1.2 .Net Framwork的组成
1.公共语言运行时
公共语言运行时是.Net Framwork的核心基础. 我们可以将CLR看成一个在执行时管理代码的代理, 它提供了内存管理, 线程管理和异常处理的服务, 而且还负责对代码实施严格的类型安全检查, 保证了代码的正确性. 我们将受CLR管理的代码称为托管代码(managed code), 将不受CLR管理的代码称为非托管代码(unmanaged code).
CLR包含两个组成部分: 通用类型系统(Common Type System, CTS)和公共语言规范(Common Language Specification, CLS).
1.3 .Net Framwork 类库就是一组DLL程序集的集合.
1.4 C# 代码的执行过程
>C#代码编译为中间语言代码的阶段
在编译C#代码时, C#的编译器(VS中集成了C#编译器)把代码译为通用中间语言(Common Intermediate Language, CIL)代码
>中间语言代码编译为本季代码的阶段
要使C#代码能够运行, 还需进一步将CIL代码转换为特定CPU的机器码, 该过程由即时编译器(Just-In-Time, JIT)来完成.
●并不是只有C#代码才能够被编译为中间语言代码, 其他面向.Net的语言在执行之前也都需要先编译为中间语言代码. 该过程由编译器来完成.
●JIT编译生成本机代码之后, 编译好的代码会被放置到一个缓冲区缓存, 下次再调用相同的代码时, 可直接运行缓存区中现有的本机代码, 从而避免重新验证IL代码以及把它编译成本机代码的过程. 使用这种方法, 系统只在首次调用时才会造成一些性能损失(即发生JIT过程).
C#代码编译为中间语言代码阶段:

中间语言代码编译为本机代码阶段

PS: 今天本来想写更多内容的, 但是时间已经不早了. 这里还欠缺几张图片, 明天再来补上, 有时间的话会分享一下在工作中学习的东西: 比如远程Debug, sql profiler等.
[读书笔记]C#学习笔记一: .Net Framwork的更多相关文章
- [读书笔记]C#学习笔记三: C#类型详解..
前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...
- [读书笔记]C#学习笔记八:StringBuilder与String详解及参数传递问题剖析
前言 上次在公司开会时有同事分享windebug的知识, 拿的是string字符串Concat拼接 然后用while(true){}死循环的Demo来讲解.其中有提及string操作大量字符串效率低下 ...
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
前言 C#1.0的委托特性使方法作为其他方法的参数来传递,而C#2.0 中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版本的实现方法.另外C#2.0还提出了可空类型,匿名方法和迭 ...
- [读书笔记]C#学习笔记二: 委托和事件的用法及不同.
前言: C#委托是什么 c#中的委托可以理解为函数的一个包装, 它使得C#中的函数可以作为参数来被传递, 这在作用上相当于C++中的函数指针. C++用函数指针获取函数的入口地址, 然后通过这个指针 ...
- [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性
前言 下面就开始总结C#4.0的一些变化了, 也是这本书中最后的一点内容了, 这一部分终于要更新完了. 同时感觉再来读第二遍也有不一样的收获. 今天很嗨的是武汉下雪了,明天周六,一切都是这么美好.哈哈 ...
- [读书笔记]C#学习笔记六: C#3.0Lambda表达式及Linq解析
前言 最早使用到Lambda表达式是因为一个需求:如果一个数组是:int[] s = new int[]{1,3,5,9,14,16,22};例如只想要这个数组中小于15的元素然后重新组装成一个数组或 ...
- [读书笔记]C#学习笔记五: C#3.0自动属性,匿名属性及扩展方法
前言 这一章算是看这本书最大的收获了, Lambda表达式让人用着屡试不爽, C#3.0可谓颠覆了我们的代码编写风格. 因为Lambda所需篇幅挺大, 所以先总结C#3.0智能编译器给我们带来的诸多好 ...
- 面向小白的JS笔记 - #Codecademy#学习笔记
前言 最初浏览过<JavaScript秘密花园>,前一段时间读过一点点<JavaScript语言精粹>和一点点<JavaScript高级程序设计>(一点点是指都只是 ...
- contiki-main.c 中的process系列函数学习笔记 <contiki学习笔记之六>
说明:本文依然依赖于 contiki/platform/native/contiki-main.c 文件. ---------------------------------------------- ...
随机推荐
- IIS报错 试图加载格式不正确 的程序集解决办法
一般都是由于系统位数不一致导致的 方法:64位启用32应用程序兼容(推荐) 思路就是把程序池设置为对应的应用程序(即到底要不要启用32位应用程序)
- iTunes Connect 开发者上手经验(转)
原文:http://www.cnblogs.com/zhw511006/archive/2013/01/15/2860945.html iOS Developer通常需要用到 developer.ap ...
- Linux配置网络YUM源
配置网络yum源 RHEL6.5 [root@xuegod163 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun ...
- Android本地数据存储复习
Android本地数据存储复习 Android无论是应用层还是系统层都需要在本地保存一些数据,尤其在应用层中使用的就更为普遍,大体有这么几种:SharedPreference,file,sqlite数 ...
- 十分钟能学会的框架,MVC+20个常用函数
LazyPHP(以下简称LP)是一个轻框架. 之所以开发这么一个框架,是因为其他框架给的太多.在高压力的情况下,ORM和盘根错节的对象树反而将简单的页面请求处理复杂化,在调试和性能上带来反面效果. L ...
- Restore Oracle database to another server
1. Copy or remotely mount the backupset folder from the source server to the target server 2. On the ...
- 写字节流转换String 代码示例
public void pushEmployee(EmpPushToTianFangRequest request){ try { StringWriter sw = new StringWriter ...
- for循环三个表达式的执行时间
for(int i = 0; i < max; i++) { //代码 } 第一个表达式:声明一个变量i,初始值为0,表示当前的循环次数:循环刚开始时执行第二个表达式:循环条件,如果i的值小于m ...
- 1.webService入门
学习webService前,先来思考一个问题: 请看以下截图: 以上是一个综合网站的部分显示信息,我们能很明显的看出打开该网页所处区域的一些信息,比如:地点是厦门,天气是阵雨,温度是9摄氏度等等... ...
- 是uibutton跟tableviewcell同步使用一个bug
这个问题是uibutton跟tableviewcell同步使用一个bug,不关delay一点毛事,证据就是点击事件没问题,so,搜到一个方法解决了这个问题.uibutton分类symbian2+ios ...