天天看点

C#高级编程(第7版)笔记--第4-5章 继承与泛型

第 4章

1、结构继承自System.ValueType,并支持多个接口的实现。

2、类继承于用户指定的另一个类,也支持多个接口的实现。

3、不仅方法可以 是 virtual,属性也可以定义成虚属性。成员字段和静态方法不能申明为虚的。

第 5章

1、泛型在性能上较优,因为它不需要进行额外的装箱与拆箱操作,在类型上是安全的,不是指定类型的数据无法加入到其中,二进制代码可重用

2、泛型类型可以通过使用default关键字,把null设置为引用类型的默认值 ,把0设置为值类型的默认值。

publiC T GetDooument()

(

T doC= default(T)

1ock (this)

(

doc = docVmentQueue.Dequeue()`

 }

return doc;

)

2、泛型中还可以使用约束如

Public class DocumentManage<Tdocument> where Tdocument:Idocument

{}

来指定类必须实现IDocument接口

3、泛型类中的静态成员只能在同一类型中共享,不同类型不能共享,比如:

staticDemo<string>.x = 4`

staticDemo<int>. x = 5

Console. WriteLine(staticDemo(string).x);  // writes 4

4、可空类型不能隐式转换为非可空类型,但反之则可以。注:可空类型是结构类型的数据

5、如果有很多类型都要实现同一功能,可以考虑使用接口加泛型的方法。比如,有很多类需要进行总金额 的计算,则可以 如下考虑。

先定义一个接口,规定进行计算所需要的数据

Public interface Iaccount

{

Decimal Balance{get;}

}

然后定义一个具体的操作方法

Public static decimal Accumulate<Taccount> (Ienumeralber<Taccount> source) where Taccount : Iaccount

{

Decimal sum=0;

Foreach(Taccount a in source)

{

Sum += a.Balance;

}

Return sum;

}

最后,只要需要使用这个方法的类实现了Iaccount 接口就可以了。

6、可以通过实现ICompare接口以实现自定义排序

7、元组可以用于合并不同类型对象。.NET4中定义了8个泛型Tuple和一个静态Tuple类,它们用作元组的工厂。