• 委托的使用


    namespace ConsoleApplication2
    {
        //最简单的委托的用法-----------------------------------
        //delegate void SayHello(string pString);//声明一个委托
        //class Program
        //{
        //    static void Main(string[] args)
        //    {
        //        SayHello sh = EnglishHello;
        //        sh("English");
        //        sh = new Program().ChineseHello;
        //        sh("Chinese");
        //        Console.Read();
        //    }
        //    private void ChineseHello(string message)
        //    {
        //        Console.WriteLine(message);
        //    }
        //    private static void EnglishHello(string message)
        //    {
        //        Console.WriteLine(message);
        //    }
        //}
        //-----------------------------------------------------
        //进化为匿名方法
        //delegate void SayHello(string message);
        //class Program
        //{
        //    static void Main(string[] args)
        //    {
        //        SayHello sh = delegate(string message) { Console.WriteLine(message); };
        //        sh("hello");
        //        Console.Read();
        //    }
        //}
        //-----------------------------------------------------
        //lamda表达式
        //delegate void SayHello(string message);
        //class Program
        //{
        //    static void Main(string[] args)
        //    {
        //        SayHello sh = x => { Console.WriteLine(x); };
        //        sh("lamda");
        //        Console.Read();
        //    }
        //}
        //-----------------------------------------------------
        //上面的代码都要声明一个委托,那么可以不声明委托吗,当然可以了,那么就涉及到两个系统声明的委托方法Action、Func
        //Action  该方法只有一个参数,没有返回值
        //public delegate void Action<in T>(T obj)
        //Func封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。
        //public delegate TResult Func<in T, out TResult>(T arg)

        更多请查看MSDN介绍  ActionFunc
        class Program
        {
            static void Main(string[] args)
            {
                Action<string> ac = sayHello;
                ac("Action");
                Action<string,int> ac1=sayHello1;
                ac1("Action",1);
                Action<string> ac2 = delegate(string message) { Console.WriteLine("ac2 "+message); };
                ac2("ac2message");
                Action<string> ac3 = s => { Console.WriteLine("ac3 "+s); };
                ac3("ac3message");

                Func<int, string> fc = sayHello2;
                Console.WriteLine(fc(1));
                Console.Read();
            }
            private static void sayHello(string message)
            {
                Console.WriteLine("hello word"+message);
            }
            private static void sayHello1(string message1,int message2)
            {
                Console.WriteLine("hello word" + message1+"-"+message2);
            }
            private static string sayHello2(int message1)
            {
                return ("hello word" + message1 + "-func");
            }
        }
        //
        //-------------------------------------------------------
        //class Program
        //{
        //    static void Main(string[] args)
        //    {
        //    }
        //}
    }

  • 相关阅读:
    Spring使用JDBC配置具名参数
    linux中的匿名管道和命名管道
    linux查看CPU信息
    磁盘阵列RAID原理、种类及性能优缺点对比
    SMP和MPP的优缺点
    Hadoop datablock size
    MySQL 高可用架构之MHA
    MySQL 高可用架构之MMM
    五大常见的MySQL高可用方案
    hive加载数据
  • 原文地址:https://www.cnblogs.com/yidianfeng/p/2235683.html
Copyright © 2020-2023  润新知