위임은 .net 1.x 버전부터 포함된 매우 중요한 기능입니다. 위임은 프로젝트 개발 과정에서 많이 사용되지만 많은 학생들이 이를 명확하게 이해하지 못했습니다. 수년 동안 개발을 해오면서 위임은 여러 곳에서 무의식적으로 사용될 수 있지만 아직 명확하지 않습니다.) 따라서 위임에 대한 인상을 요약하고 심화하기 위해 일련의 기사를 구성하겠습니다.
는 두 가지로 요약할 수 있습니다:
1. 가장 대중적인 이해는 안전한 '함수 포인터'입니다.
2. 기본적으로 대리자는 클래스이며(아래 표시된 대로 IL을 통해 증명할 수 있음) 대리자는 동일한 메서드 시그니처와 동일한 반환 값을 가진 여러 메서드를 포함합니다.
위임의 클래스 다이어그램:
위 그림에서 몇 가지 정보를 얻을 수 있습니다. 1. 위임은 클래스입니다. 2. 대리자는 System.MulticastDelegate 유형에서 상속됩니다.
더 인기 있는 진술은 위임을 사용하면 어떤 이점을 얻을 수 있는지입니다.
다음은 위임 사용의 이점을 보여주는 작은 예입니다. 요구 사항은 이름을 입력하면 콘솔이 중국어와 영어 인사말을 각각 인쇄한다는 것입니다.
위임 사용하지 않음:
1 namespace DelegateDemo 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 //通过输入的name,控制台分别打印中文和英文的问候语 8 Hello("麦子", Language.Chinese); 9 Hello("mcgrady", Language.English);10 11 Console.ReadKey();12 }13 14 /// <summary>15 /// 问候16 /// </summary>17 /// <param name="name"></param>18 /// <param name="lang"></param>19 private static void Hello(string name, Language lang)20 {21 if (lang == Language.Chinese)22 {23 ChineseHello(name);24 }25 if (lang == Language.English)26 {27 EnglishHello(name);28 }29 }30 31 /// <summary>32 /// 中文问候33 /// </summary>34 /// <param name="name"></param>35 private static void ChineseHello(string name)36 {37 Console.WriteLine(string.Format("你好,{0}", name));38 }39 40 /// <summary>41 /// 英文问候42 /// </summary>43 /// <param name="name"></param>44 private static void EnglishHello(string name)45 {46 Console.WriteLine(string.Format("hello,{0}", name));47 }48 49 }50 51 /// <summary>52 /// 语言类型53 /// </summary>54 public enum Language55 {56 English,57 Chinese58 }59 }
위임 사용하지 않을 경우 열거형 언어를 사용하여 중국어 인사말을 사용할지, 영어 인사말을 사용할지 표시하고, 그렇지 않은지도 판단해야 합니다. .. .
메서드를 직접 전달할 수 있으면 훨씬 간단할 수 있습니다.
위임 사용:
1 namespace DelegateDemo 2 { 3 //声明委托 4 delegate void MyDel(string name); 5 6 class Program 7 { 8 static void Main(string[] args) 9 {10 //通过输入的name,控制台分别打印中文和英文的问候语11 Hello("麦子", ChineseHello);12 Hello("mcgrady", EnglishHello);13 14 Console.ReadKey();15 }16 17 /// <summary>18 /// 问候19 /// </summary>20 /// <param name="name"></param>21 /// <param name="myDel"></param>22 private static void Hello(string name, MyDel myDel)23 {24 myDel(name);25 }26 27 /// <summary>28 /// 中文问候29 /// </summary>30 /// <param name="name"></param>31 private static void ChineseHello(string name)32 {33 Console.WriteLine(string.Format("你好,{0}", name));34 }35 36 /// <summary>37 /// 英文问候38 /// </summary>39 /// <param name="name"></param>40 private static void EnglishHello(string name)41 {42 Console.WriteLine(string.Format("hello,{0}", name));43 }44 45 }46 }
요약하면 위임의 주요 이점은 다음과 같습니다.
1 if...else...또는 스위치를 많이 절약합니다. .. 판단은 프로그램을 더욱 객체 지향적으로 만듭니다.
2. 디커플링을 사용하면 프로그램을 더 쉽게 확장할 수 있습니다. 예: Tracy.Proxy 인터페이스 프록시 구성 요소는 xml 로그 및 성능 로그를 기록합니다.
물론 이는 위임 사용의 이점을 설명하기 위한 예일 뿐입니다. 실제로 위임은 winform 및 webform의 버튼 클릭 이벤트, Linq의 Func 및 Action 위임 등 다양한 곳에서 사용됩니다.
1. winform 및 webform의 버튼 클릭 이벤트입니다.
2, Linq의 Func 및 Action 대표.
3, Tracy.Proxy 인터페이스 프록시 구성 요소
XMind를 사용하여 요약:
위 내용은 위임이란 무엇입니까? .net의 중요한 기능 위임 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!