zoukankan      html  css  js  c++  java
  • 面向对象基础(七)

    委托

      委托是一种新的面向对象语言特性,在历史比较长的面向对象语言比如C++中并未出现过。微软公司在设计运行.NET Framework 平台之上的面向对象语言时引入了这一特性。

    1、概念:

      委托可以看成是一个函数的“容器”,将某一具体的函数“装入”后,就可以把它当成函数一样使用。委托变量可看成是一种类型安全的函数指针,它只能接收符合其要求的函数地址。

    2、定义方法:delegate关键字。例:

        public delegate int MyDele(int a, int b);

    3、利用委托调用函数

    (1)首先定义一个类,里面写几个方法:

    复制代码
        class Class1
        {
            public int Jiafa(int a, int b)
            {
                return a + b;
            }
            public int Jianfa(int a, int b)
            {
                return a - b;
            }     }
    复制代码

    (2)通过委托调用函数:

    MyDele m ; //定义一个已有委托类型的变量
    m = new Class1().Jiafa; //给上面的变量赋值
    Console.WriteLine(m(1,2));//结果为3
    m = new Class1().Jianfa; Console.WriteLine(m(1,2));//结果为-1

    4、注意:一个委托类型的变量,可以引用任何一个满足其要求的函数。

    5、委托的扩展:

    (1)特殊的委托泛型集合,匿名委托            

    Func<string, string> myfunc = new Class1().ReturnString;//输入string,输出string
    Console.WriteLine(myfunc("张三"));

    (2)直接写方法

    Func<string, string> newfunc = delegate(string s) 
    {
          return s + "world!";            
    };
    Console.WriteLine(newfunc("李四"));

    (3)lambda方法简易版1、用s=>代替delegate(string s)      

    Func<string, string> newfunc1 = s=> 
    {
              return s + "world!";
    }; 

    (4)lambda方法简易版2、两个参数

    Func<string, string,string> newfunc2 = (s1,s2) =>             
    {
             return s1 + "world!"+s2;             
    }; 

    (5)lambda方法简易版3、去掉大括号,直接写方法

    Func<string, string,string> newfunc3 = (s1, s2) =>s1+"world!"+s2;              Console.ReadLine();
  • 相关阅读:
    Fatal error compiling: invalid target release: 11 -> [Help 1]
    java -jar 设置日志位置
    wordpress 添加 显示磁盘剩余空间百分比的插件
    记录我个人对Telegram的了解
    Ubuntu 18.04 切换使用Python3
    基于 CI 1.7.x 的 项目使用新版本CI的文件缓存类库
    使用sqlyog工具同步两个相同结构的数据库之间的数据
    了解GTIN小记
    华为手机设置桌面图标角标提醒的实现
    Quill编辑器IOS下无法获取焦点的解决方法
  • 原文地址:https://www.cnblogs.com/qiqige77/p/4299337.html
Copyright © 2011-2022 走看看