第三章
1.只读字段
Readonly关键字比const灵活的多,允许把一个字段设置为常量,但还需执行一些计算,已确定他的初始值。其规则是可以在构造函数中给只读字段赋值,但不能在其他地方赋值。只读字段还可以是一个实例字段,而不是静态字段,类的每个实例可以有不同的值。如果把只读字段设置为static,则必须显示声明他。
只读字段:用readonly修饰符声明的字段为只读字段,只读字段可以是实例字段或静态字段,它只能在字段声明中或构造函数中重新赋值,在其它任何地方都不能改变只读字段的值。
常量:用const修饰符声明的字段为常量,常量只能在声明中初始化,以后不能再修改。
静态构造函数:一个类只能有一个静态构造函数,静态构造函数前面必须是static,最多只运行一次,不可以被继承。静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。
2.部分类
Partial关键字允许把类、结构、方法或接口放在多个文件中。
3.静态类
如果类只包含静态的方法和属性,该类就是静态类。静态类功能上和使用私有静态构造函数创建的类相同。不能创建静态类的实例。使用static关键字,编译器可以检查用户是否不经意间给该类添加了实例成员,如果是,就发生一个编译错误。静态类语法如下:
static class StaticUtilities
{
public static void HelperMethod()
{
}
}
调用方法:StaticUtilities.HelperMethod();
4.Object类
所有的.NET类都派生自system.Object。其实际意义在于,除了自己定义的方法和属性外,还可以访问为Object定义的许多共有的和受保护的成员方法。
System.Object()方法:
- ToString()方法:
- GetHashCode()方法:
- Equals()(两个版本)和ReferenceEquals()方法:
- Finalize()方法:
- GetType()方法:
- MemberwiseClone()方法:
5.扩展方法
有许多扩展类的方式。如果有类的源码,继承就是给对象添加功能的好方法。如果没有源代码,则可以使用扩展方法,它允许改变一个类,但不需要该类的源码。
扩展方法是静态方法,他是类的一部分,但是没有放在类的源代码中。例如一个Money类需要添加一个方法AddToAmount(Decimal amountToAdd),但是 ,由于某种原因源码不能修改,此时必须创建一个静态类,把方法AddToAmount()添加为静态方法。
Public static class MoneyExtension
{
Public static void AddToAmount(this Money money,decimal amountToAdd)
{
//ToDo Sth
}
}
注意这个方法的参数,第一个参数是要扩展的类型,他放在this关键字的后面,告诉编译器,这个方法是Money类型的一部分。
另外调用的时候:
Money money=New Money();
money.AddToAmount(10M);
即使这个扩展方法是静态的,也要使用标准的实例方法语法。如果扩展方法与类中的某个方法名相同,则就从不会调用这个扩展方法。