zoukankan      html  css  js  c++  java
  • 委托

      引用存储为函数的类型。声明使用delegate关键字,指定一个函数的签名,包含一个返回类型和参数列表。定义委托后,可以声明该委托类型的变量。初始化该变量使为和该委托有相同函数签名的函数引用使用。就可以使用委托变量来调用这个函数。对该变量的使用就如同使用函数一样。

        有了引用函数变量,可以执行其它方式无法完成的操作。:把委托变量作为参数传递给一个函数。则该函数就可以通过委托调用它引用的函数,而且在运行前不需要知道是哪个函数。

    class Person 
        {
            public Person(string name, int age) 
            {
                this.name = name;
                this.age = age;
            }
            private string name;//ctrl+r+e快捷键 封装字段
    
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
    
            private int age;
    
            public int Age
            {
                get { return age; }
                set { age = value; }
            }
            public override string ToString()
            {
                return this.name;
            }
        } 
    //声明委托
    delegate int DelCompare(object o1, object o2); class Program { static void Main(string[] args) { //比较整数 //object[] arr = { 1, 2, 6, 8 }; //DelCompare del = IntCompare; //Console.WriteLine(GetMax(arr,del)); //比较字符串 //object[] arr = { "34sdfazca", "asfaf ", "A ad" }; //DelCompare del = StringCompare; //Console.WriteLine(GetMax(arr,del)); //比较person object[] arr ={ new Person("abc",18), new Person("asd",12), new Person("ert",70) };
    //定义委托,让委托指向方法 DelCompare del
    = PersonCompare;
    //调用委托 Console.WriteLine(GetMax(arr,del)); Console.ReadLine(); }
         /*匿名方法
          DelString del=delegate(string str)
          {
            return """ +str+ """;
          };*/
     
    //比较数组 static int IntCompare(object o1, object o2) { int i1 = (int)o1; int i2 = (int)o2; return i1 - i2; } //比较字符串长度 static int StringCompare(object o1, object o2) { string s1 = o1.ToString(); string s2 = o2.ToString(); return s1.Length - s2.Length; } //比较人大小 static int PersonCompare(object o1, object o2) { Person p1 = o1 as Person; Person p2 = o2 as Person; return p1.Age - p2.Age; } static object GetMax(object[] arr, DelCompare del) { object max = arr[0]; for (int i = 1; i < arr.Length; i++) { if (del(arr[i],max)>0) { max = arr[i]; } } return max; } }
    //从小到大的排序
            static void Sort(object[] arr,DelCompare del) 
            {
                //冒泡的次数
                for (int i = 0; i < arr.Length-1; i++)
                {
                    //两两比较的次数
                    for (int j = 0; j < arr.Length-1-i; j++)
                    {
                        if (del(arr[j],arr[j+1])>0)
                        {
                            object tmp = arr[j];
                            arr[j] = arr[j + 1];
                            arr[j + 1] = tmp;
                        }
                    }
                }
            }
  • 相关阅读:
    20款时尚的 WordPress 企业模板【免费主题下载】
    3D Grid Effect – 使用 CSS3 制作网格动画效果
    WTF Forms – 使用 CSS 实现用户体验更好的表单
    Tiff – 值得你体验一下的可视化的字体对比工具
    Quill – 可以灵活自定义的开源的富文本编辑器
    Photopile JS – 帮助你实现精致的照片堆叠效果
    Web 前端开发人员和设计师必读精华文章【系列二十六】
    Shepherd – 在应用程序中轻松实现引导功能
    Gulp.js
    12款响应式的 jQuery 旋转木马(传送带)插件
  • 原文地址:https://www.cnblogs.com/danznb/p/3480873.html
Copyright © 2011-2022 走看看