zoukankan      html  css  js  c++  java
  • C# 委托

    1. 为什么使用委托

    由于三个方法中,只有一句代码不同。可以考虑将三个方法简化为一个,并将不同的部分作为参数传入上述方法中。将一个方法作为参数传递给另一个方法,传递方法的类型,定义位委托类型。

    2. 委托概念

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 委托概念
    {
        class Program
        {
            //将一个方法作为另一个方法的参数时,前面的方法可使用委托
            //委托的定义应与其所对应的函数的标签一致
            //函数标签,指函数的返回值和参数
            public delegate void Dele(string name);
    
            static void Main(string[] args)
            {
                //1.1 初始化委托,并直接调用
                //Dele dele = new Dele(SayHiChinese);
                //dele("喵");
    
                //1.2 初始化委托
                //Dele dele = SayHiChinese;
                //dele("喵");
    
                //1.3 使用匿名函数初始化委托
                //Dele dele = delegate(string name)
                //{
                //    Console.WriteLine("匿名 " + name);
                //};
                //dele("喵");
                
                //2. 委托作为另一个方法的参数
                //Test("cat", SayHiChinese);
    
                //3. 用匿名函数初始化委托
                //可避免声明多个函数,用于当函数只使用一次时
                //Test("dog", delegate(string  name)
                //{
                //    Console.WriteLine("Anonymouse " + name);
                //    Console.ReadKey();
                //});
    
                //4. lamda表达式( => goes to)和委托
                Dele dele = (string name) => { Console.WriteLine("lamda表达式" + name); };
                dele("cat");
            }       
    
            public static void Test(string name, Dele dele)
            {
                dele(name);
    
            }
    
            public static void SayHiChinese(string name)
            {
                Console.WriteLine("你好吗? " + name);
                Console.ReadKey();
            }
    
            public static void SayHiEnglish(string name)
            {
                Console.WriteLine("How are you?" + name);
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    反射获取成员方法并运行
    反射获取成员变量,并修改值
    反射获取私有的构造方法运行
    反射获取构造方法并运行的快速的方式
    通过反射,获取有参数的构造方法并运行
    ssh端口映射
    python常见环境安装
    hadoop fs管理文件权限
    oracle通过DBlink连接mysql(MariaDB)
    [mysq]ERROR 2006 (HY000) at line xx: MySQL server has gone away 解决方法
  • 原文地址:https://www.cnblogs.com/my-cat/p/7827485.html
Copyright © 2011-2022 走看看