初识委托

2018-06-22 07:53:36来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

委托的概念

      委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。通俗的来说委托是一个类型,它与Class 是同一级别的。

如何使用委托

      在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。

简单的实例如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace DelegateDemo
 8 {
 9     //定义一个委托
10     public  delegate  bool   Compare(int x,int y);
11   public  class PaiXuDemo
12     {
13         private int[] arry;
14         public int[] Arry
15         {
16             set { arry = value; }
17             get { return arry; }
18         }
19           // 比大
20          public bool Greater(int left, int right)
21          {
22               return left > right;
23          }
24          // 比小
25          public bool Less(int left, int right)
26          {
27               return !Greater(left, right);
28          }
29        public void Sort(Compare compare)
30          {
31               for (int i = 0; i < arry.Length-1; i++)
32               {
33                    for (int j = i + 1; j < arry.Length; j++)
34                    {
35                        if (compare(arry[i], arry[j]))
36                        {
37                             int tmp = arry[i];
38                             arry[i] = arry[j];
39                             arry[j] = tmp;
40                        }
41                    }
42               }
43          }
44 
45        static void Main(string[] args) {
46            PaiXuDemo sample = new PaiXuDemo();
47            sample.Arry = GetArry();
48            // 使用降序
49            sample.Sort(new Compare(sample.Less));
50          PrintArry(sample);      
51            Console.ReadKey();
52        }
53       /// <summary>
54       /// 循环输出数字
55       /// </summary>
56       /// <param name="sample"></param>
57        private static void PrintArry(PaiXuDemo sample)
58        {
59            for (int i = 0; i < sample.Arry.Length; i++)
60            {
61                Console.WriteLine(sample.Arry[i]);
62            }
63        }
64       /// <summary>
65       /// 获取字符以及长度
66       /// </summary>
67       /// <returns></returns>
68        private static int[] GetArry()
69        {
70            int[] arry = { 12, 14, 15, 16, 184, 1, 56, 189, 652, 2 };
71            return arry;
72        }
73     }
74 }
View Code

效果图如下:

 

 

 

 

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:我的收藏之数据库优化

下一篇:ASP.NET页面之间传值的方式之Cookie(个人整理)