Lambda表达式 笔记(二)泛型T运算符
泛型T不能直接进行+,-,*,/等运算符运算,可以先把操作数转换为dynamic ,在进行计算,完了了在转换回去。这种方法速度特别慢,特别是大量运算时,一般接收不了,我们把类做成泛型,一般希望做成以后经常用的库,性能肯定是有要求的。
1 public T Add(T a, T b)
2 {
3 dynamic da = a;
4 dynamic db = b;
5 return (T)(da + db);
6 }
后来想到了采用委托+Lambda,这种方法复杂,在不失灵活性的情况下,性能比采用dynamic效率高很多,委托定义一般利用System.Func,委托实例采用Lambda表达式,这种方式特别简洁。
1 public T Add(Func<T,T,T> add,T a,T b)
2 {
3 return add(a, b);
4 }
5 [Test]
6 public static void Test1()
7 {
8 Calculate<int> calInt = new Calculate<int>();
9 Func<int, int, int> add = (c1, c2) => c1 + c2;
10 for (int i = 0; i < n; i++)
11 {
12 calInt.Add(add, i, i);
13 }
14 }
浙公网安备 33010602011771号