C#学习笔记之泛型-泛型方法
1、1.首先来看一下如何定义泛型方法,Swap<T>()方法把T定义为泛型类型,该泛型类型用于两个参数和一个变量temp:如下图所示:把泛型类型赋予方法调用,就可以调用泛型方法:int i=4;int j=5;Swap<int>(ref i,ref j);但是,因为C#编译器会通过调用Swap()方法来获取参数的类型,所以不需要把泛型类型赋予方法调用,泛型方法可以像非泛型方法这样调用:int i=4;int j=5;swap(ref i,ref j);

3、其中累加余额的所有账户操作都添加到List<Account>类型的账户列表中:var account=new List<Account>(){new Account("1",1000);new Account("2",3000);new Account("3",4000);new Account("4",4000);};累加所有Account对象的表达式用foreach语句遍历所有的Account对象,如下图所示。foreach语句使用IEnumerable接口迭代集合的元素,所以AccumulateSimple()方法的参数是IEnumerable类型。

5、4.带委托的泛型方法:泛型类型实现Iaccount接口的要求过于严格,下面的示例提示了,如何通过传递一个泛锸责氧铼型委托来修改Accumulate()方法。这个Accumulate()方法使用两个泛型参数T1和T2。第一个参数T1用于实现IEnumerable<T1>参数的集合,第二个参数使用泛型委托Fun<T1,T2,TResult>.其中,第二个和第三个泛型参数都是T2的类型。需要传递的方法有两个输入参数(T1和T2)和一个T2类型的返回值,如下所示:调用该方法时,需要指定泛型参数类型,因为编译器不能自动推断出该类型:decimal amount=Algorithms.accumulateSimple<Account,decimal>(accounts,(item,sum))=>sum+=item.Balance;
