第三章 对象和类型
这一章的内容比较基础
1.类和结构的区别
a.最大的区别存储位置不一样:类是引用类型存放在堆上,结构是值类型存放在堆栈上。所以new运算符与类的工作方式不同,不分配内存,只是调用构造函数,初始化字段。
结构可以编写如下的代码:
Demensions point;
point.Length = 3;
point.Width =6;s
b.结构不支持继承;
c.结构不允许定义无参数构造函数,不能给字段提供初始值;
2.类成员
a. ref 参数带入前初始化 out 在返回前初始化
b. 方法重载
两个方法不能仅在返回类型上有区别。
两个方法不能仅根据参数是声明为ref还是out来区分。
方法签名 指的是方法名相同,但参数的个数和类型不同。不包括返回值。
3 静态构造函数
没有访问修饰符;不能带任何参数;一个类只能有一个静态构造函数,显然,静态构造函数只能访问静态成员。
4 自读字段
把字段声明为只读类型,表示其值只能在构造函数中设置。
5 部分类
以前写代码经常会看到partical,从来没有去想过它的意义。其实就是嵌套,我理解为Asp里面的top.asp
6 扩展方法
如果有类的源代码,继续是给对象添加功能的好方法。
如果没有源代码,可是使用扩展方法。
假设有Money类需要一个方法AddToAmount(decimal amountToAdd)。创建一个静态类,把方法AddToAmount添加为一个静态方法
public static class MoneyExtension
{
public static void AddToAmount(this Money money,decimal amountToAdd)
{money.Amount += amountToAdd};
}
在扩展方法中,可以访问所扩展类型的所有共同方法和属性
调用时 : cash1.AddToAmount(10M); 需要使用实例变量调用。
如果已经存在同样的方法,扩展方法不会被调用。