.net 3.5에는 Linq 및 람다 표현식이 도입되어 대리자 생성이 더욱 간단하고 우아해졌습니다.
람다 표현식이 도입된 후에는 익명 메서드를 사용할 필요가 없어 대리자를 만드는 방법이 더 간단하고 우아해졌습니다. 사실 람다 표현식을 먼저 도입하면 익명 메소드가 없을 겁니다.
Lambda 표현식은 C#에서 "arg-list => expr-body"로 작성됩니다. "=>" 기호의 왼쪽은 표현식의 매개변수 목록이고 오른쪽은 표현식 본문( 몸). 매개변수 목록에는 쉼표로 구분된 0개 이상의 매개변수가 포함될 수 있습니다.
1 namespace DelegateDemo 2 { 3 //声明委托 4 public delegate void MyDel(string arg1, string arg2); 5 6 class Program 7 { 8 static void Main(string[] args) 9 {10 //.net 3.5中的委托11 12 //创建委托,使用lambda表达式代替匿名方法13 MyDel myDel = (string arg1, string arg2) =>14 {15 Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));16 };17 18 //调用委托19 myDel("aaa", "bbb");20 21 Console.ReadKey();22 }23 }24 }
컴파일러는 위임 선언에서 위임 매개변수의 유형을 알 수 있기 때문에(이 기능을 유형 추론이라고 함) 매개변수 유형을 생략할 수 있으므로 코드가 단순화됩니다. 다음과 같이.
1 //创建委托,使用lambda表达式代替匿名方法2 MyDel myDel = (arg1, arg2) =>3 {4 Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));5 };
참고: 매개변수가 하나만 있는 경우 매개변수 유형 주위의 괄호를 생략할 수도 있습니다.
람다 표현식에서는 표현식 본문이 명령문 또는 명령문 블록이 될 수 있으므로 표현식 본문에 명령문이 하나만 있는 경우 명령문 블록을 명령문으로 대체하여 단순화를 계속할 수 있습니다. 다음 코드:
1 //创建委托,使用lambda表达式代替匿名方法2 MyDel myDel = (arg1, arg2) => Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));
위 내용은 .net 3.5의 대리자 인스턴스 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!