집 >백엔드 개발 >C#.Net 튜토리얼 >위임이란 무엇입니까? .net의 중요한 기능 위임 요약
위임은 .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 중국어 웹사이트의 기타 관련 기사를 참조하세요!