• 初识委托


    委托的概念

          委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用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

    效果图如下:

     

     

  • 相关阅读:
    令Django 视图有默认 login_required
    sql语句 case
    java进制转换
    倒水问题
    全排列
    数据库范式
    操作系统——磁盘设备管理
    Windows系统安装MySQL
    Java题库——Chapter16 JavaFX UI组件和多媒体
    Java题库——Chapter15 事件驱动编程和动画
  • 原文地址:https://www.cnblogs.com/kiamer2425/p/7756182.html
Copyright © 2020-2023  润新知