Lambda 표현식 노트 (2) 일반 T 연산자

5550 단어 lambda
범형 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 }

좋은 웹페이지 즐겨찾기