이전 기사에서는 위임을 사용하여 다국어 인사말 프로그램을 구현하는 방법을 설명했습니다. 이 기사에서는 .net 1.x의 위임 사용을 요약합니다.
델리게이트는 타입(클래스)이기 때문에 먼저 클래스를 선언하고, 객체를 새로 만들고, 마지막으로 호출하는 과정을 거쳐야 합니다.
.net 1.x의 위임 사용은 다음 코드와 같습니다.
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 1.x中的委托11 Class1 c1 = new Class1();12 13 //创建委托对象14 MyDel myDel1 = new MyDel(c1.InstanceMethod);//实例方法15 MyDel myDel2 = new MyDel(Class1.StaticMethod);//静态方法16 17 //调用委托18 myDel1("a", "b");//或者myDel1.Invoke("a", "b");19 myDel2("a", "b");//或者myDel2.Invoke("a", "b");20 21 Console.ReadKey();22 }23 }24 25 public class Class126 {27 public void InstanceMethod(string arg1, string arg2)28 {29 Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));30 }31 32 public static void StaticMethod(string arg1, string arg2)33 {34 Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));35 }36 }37 }
위 코드에서 요약할 수 있습니다.
1, 위임 허용 가능 인스턴스 메서드는 메서드의 시그니처와 반환 값 형식이 대리자와 일치하는 한 정적 메서드도 허용할 수 있습니다.
2. 대리자를 호출하는 방법에는 두 가지가 있습니다. 첫 번째는 본질적으로 대리자를 호출하는 Invoke 메서드입니다.
위에서는 new DelegateType()을 사용하여 위임을 생성합니다. 실제로 더 간단한 방법을 사용하여 위임을 생성할 수 있습니다. 위의 대리자를 생성하는 코드는 다음과 같이 단순화할 수 있습니다.
1 //创建委托对象2 MyDel myDel1 = c1.InstanceMethod;//实例方法3 MyDel myDel2 = Class1.StaticMethod;//静态方法
위 예에서는 대리자를 생성할 때 하나의 메서드만 초기화됩니다. 실제로 대리자는 추가할 수 있습니다. 여러 메서드 추가 '+='를 통해 다음 코드와 같이 '-='을 통해 제거 메서드가 구현됩니다.
1 //创建委托对象2 MyDel myDel = c1.InstanceMethod;3 myDel += c1.InstanceMethod2;4 myDel += Class1.StaticMethod;5 myDel += Class1.StaticMethod2;
1 여러 대리자로 구성된 체인 위임(또는 멀티캐스트 위임)은 System.MulticastDelegate 클래스는 연결 위임을 위해 설계되었습니다.
2, +=는 기본적으로 Delegate.Combine 메서드를 호출합니다.
대리자를 호출하는 것은 메서드를 호출하는 것만큼 간단합니다. 대리자에 필요한 매개 변수만 전달하면 됩니다. 이러한 매개 변수는 대리자의 메서드 목록에 있는 각 메서드를 호출하는 데 사용됩니다. 다음 코드에 표시된 대로 순서대로 호출됩니다.
1 //调用委托2 myDel("aaa","bbb");
연결된 대리자를 순차적으로 호출할 수 있는 이유는 System.MulticastDelegate가 내부적으로 다음 대리자에 대한 포인터를 유지하기 때문입니다.
출력 결과:
참고:
1. 여러 개의 동일한 메서드가 대리자에 추가되면 이러한 메서드가 반복적으로 호출됩니다.
2. 대리자에 반환 값이 있고 대리자의 호출 메서드 목록에 여러 메서드가 포함되어 있는 경우 마지막 메서드의 반환 값만 반환되고 다른 반환 값은 무시됩니다.
마지막으로 XMind를 사용하여 요약합니다.
위 내용은 .net 1.x의 위임 인스턴스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!