现在的位置: 首页 > 综合 > 正文

.Net框架基本概念(读书笔记——叩响C#之门)

2013年05月29日 ⁄ 综合 ⁄ 共 1197字 ⁄ 字号 评论关闭

  一直对.Net框架迷迷糊糊的,今天看到这一章,终于帮我理清了思路。

第一、.Net框架应理解为代码的执行环境:一方面它管理代码的执行过程,另一方面它为代码提供类库支持。

  公共语言运行时(CLR)则是管理代码的执行过程。它负责运行代码、确保代码的安全性和准确性;并负责管理内存、线程调度等核心任务。通常我们把在CLR控制下的运行的代码称为托管代码。

  .Net 框架基础类库(FCL)则是代码的类库支持者。

第二、C#和.Net的关系

C#源代码——编译——微软中间语言(MSIL)——经过JIT(即时编译)——机器语言

JIT提高性能:因为JIT编译是在程序运行时发生。

MSIL为语言的互操作行提供了可能:因为不同语言编写的组件最终都编译为中间语言,然后组成一个完整的程序。

msil理论上可以运行在任何安装了.net框架的操作系统上。

第三、CTS通用类型系统和公共语言规范(CLS)

  以前一直搞不清为什么C#用Int和Int32表示同一种类型,现在终于明白了。INT32等是MSIL语言的类型——CTS类型——通用类型系统的标准的基本数据类型,只是在不同语言中有不同的表示方法。如C#里是INT,C++里是(sign)int.也就是说不管是C#的int还是C++的(sign)int最终都编译成MSIL的INT32类型。

通用类型系统不但指定了基本的数据类型,还定义了一个内容丰富的类型层次结构。

  CLS是所有.NET语言都支持的语言规范。也就是说公共语言规范中的语法规则在所有.NET语言中都成立,它是所有.NET语言都支持的语法规则的交集。从而,符合CLS规范的代码转换为中间语言后能被.NET上任何语言访问,从而确保不同语言的互操作行。当然,编写不符合CLS规范的代码也是可以的,但是不能保证不同语言的互操作性。

类型的判定:

sizeof:获取数据类型在内存中的字节数。但不能获取自己定义的类的数据类型的字节数。

typeof:获取数据类型的CTS类型名,故起参数只能是类型。也就是编译成中间语言后的类型。自己定义的类型也可以获取。

GetType:获取某个变量的类型。

is运算符:检验某个对象是否是某种类型。有点与GetType类似,但是当对象和类型之间是继承关系式,is运算符仍然会返回TRUE。

命名空间:命名空间是用来组织类的,避免两个类库的重名。

 

装箱、拆箱:

值类型——引用类型:装箱(隐藏)

引用类型——值类型:拆箱(显示转换)

对象的相等:

ReferenceEquals()和Equals()和相等运算符(==):

ReferenceEquals()和Equals()默认情况均比较引用符,但是我们可以对Equals()进行重写,使之比较值类型;

相等运算符(==):默认情况下,若两个对象为值类型,则比较值;若两个对象为引用类型,则比较引用符。但是我们可以用重载运算符的方法加以改变。

 

 

抱歉!评论已关闭.