begin @ 2009-3-18
第二章 公共语言运行库
编绎器把托管代码编绎为MSIL和元数据.存放于基于以前pe格式的文件中.
再由JIT编绎器把它们翻译为本机代码.(两种:一种为运行时动态编绎,一种为安装时代码生成的编绎模式)
工作接到一个项目,忙了几天,
到现在才继续这本书... 郁闷
mark @2009-3-22
公共语言规范(cls)
元数据是一种二进制信息,用以对存储在公共语言运行库可移植可执行文件 (PE) 文件或存储在内存中的程序进行描述。将您的代码编译为 PE 文件时,便会将元数据插入到该文件的一部分中,而将代码转换为 Microsoft 中间语言 (MSIL) 并将其插入到该文件的另一部分中。在模块或程序集中定义和引用的每个类型和成员都将在元数据中进行说明。当执行代码时,运行库将元数据加载到内存中,并引用它来发现有关代码的类、成员、继承等信息
toString() 格式化输出.
字符串,数字,日期,枚举格式化.
IFormatProvider接口
复合格式化
int i = 111;
Console.WriteLine("{0:C}", i);
//显示:¥111.00
对齐
字符串与值类型,日期,枚举,==之间的转换.
-----------------------------------------
Exception 总是以 Exception结尾
事件命名原则
用EventHandloer后缀命名事件处理程序,如下列所示。
public delegate void MouseEventHandler(object sender, MouseEvent e);
使用名为sender和e的两个参数。
Sender参数代表提出事件的对象。Sender参数永远是一个类型对象,即使它可能使用了更为特定的类型。
与事件相关的状态被封装在一个名为e的事件类范例中。要使用这个类型的正确的、特定的事件类。
public delegate void MouseEventHandler(object sender, MouseEvent e);
用EventArgs后缀命名事件自变量类,如下例所示。
public class MouseEventArgs : EventArgs {
int x;
int y;
public MouseEventArgs(int x, int y)
{ this.x = x; this.y = y; }
public int X { get { return x; } }
public int Y { get { return y; } }
}
命名事件名时,需要有之前和之后的时态概念,因此要使用现在时态和过去时态(不要使用BeforeXxx\AfterXxx的方式)。例如,可以被取消的结束事件就有Closing事件和Closed事件。
public event ControlEventHandler ControlAdded {
//..
}
用动词命名事件。
一般用CallBack后缀命名回调函数