zoukankan      html  css  js  c++  java
  • Func委托

    1. 无参有返回值

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //1. 通过New关键字实例化,使用Invoke方法调用
                Func<int> fun1 = new Func<int>(FunWithNoPara);
                int result1 = fun1.Invoke();
                Console.WriteLine(result1);
    
                //2. 直接将方法赋值,当做普通方法方式调用
                Func<int> fun2 = FunWithNoPara;
                int result2 = fun2();
                Console.WriteLine(result2);
    
                //3. 使用匿名函数
                Func<int> fun3 = delegate() { return 10; };
                int result3 = fun3();
                Console.WriteLine(result3);
    
                //4. Lambda表达式(推荐)
                Func<int> fun4 = () => 10;
                int result4 = fun4();
                Console.WriteLine(result4);
                Console.ReadLine();
            }
    
            public static int FunWithNoPara()
            {
                return 10;
            }
        }
    }
    View Code

    2. 一个参数有返回值

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //1. 通过New关键字实例化,使用Invoke方法调用
                Func<int, int> fun1 = new Func<int, int>(FunWithPara);
                int result1 = fun1.Invoke(1);
                Console.WriteLine(result1);
    
                //2. 直接将方法赋值给委托,当做普通方法调用
                Func<int, int> fun2 = new Func<int, int>(FunWithPara);
                int result2 = fun2.Invoke(1);
                Console.WriteLine(result2);
    
                //3. 使用匿名函数
                Func<int, int> fun3 = delegate(int p) { return p; };
                int result3 = fun3(1);
                Console.WriteLine(result3);
    
                //4. Lambda表达式
                Func<int, int> fun4 = p => p;
                int result4 = fun4(1);
                Console.WriteLine(result4);
                Console.ReadLine();
            }
    
            static int FunWithPara(int i)
            {
                return i;
            }
        }
    }
    View Code

    3. 多个参数有返回值

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2
    {
        //定义委托
        class Program
        {
            static void Main(string[] args)
            {
                //1. 通过New关键字实例化,使用Invoke方法调用
                Func<int, string, bool> fun1 = new Func<int, string, bool>(FunWithMultiPara);
                bool result1 = fun1.Invoke(2, "abc");
                Console.WriteLine(result1);
    
                //2. 直接赋值,普通方法调用
                Func<int, string, bool> fun2 = FunWithMultiPara;
                bool result2 = fun1.Invoke(2, "2");
                Console.WriteLine(result1);
    
                //3. 使用匿名函数
                Func<int, string, bool> fun3 = delegate(int p, string q) { return p.ToString().Equals(q) ? true : false; };
                bool result3 = fun3(1, "1");
                Console.WriteLine(result2);
    
                //4. Lambda表达式
                Func<int, string, bool> fun4 = (p, q) =>
                {
                    return p.ToString().Equals(q) ? true : false;
                };
                bool result4 = fun4(1, "ed");
                Console.WriteLine(result3);
                Console.ReadLine();
            }
    
            static bool FunWithMultiPara(int i, string s)
            {
                return i.ToString().Equals(s) ? true : false;
            }
        }
    }
    View Code

     4. 委托当做方法参数

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(Test<int, int>(Fun, 100, 200));
                Console.ReadKey();
            }
    
            public static int Test<T1, T2>(Func<T1, T2, int> func, T1 a, T2 b)
            {
                return func(a, b);
            }
            private static int Fun(int a, int b)
            {
                return a + b;
            }
        }
    }
    View Code
  • 相关阅读:
    Digital Video Stabilization and Rolling Shutter Correction using Gyroscope 论文笔记
    Distortion-Free Wide-Angle Portraits on Camera Phones 论文笔记
    Panorama Stitching on Mobile
    Natural Image Stitching with the Global Similarity Prior 论文笔记 (三)
    Natural Image Stitching with the Global Similarity Prior 论文笔记(二)
    Natural Image Stitching with the Global Similarity Prior 论文笔记(一)
    ADCensus Stereo Matching 笔记
    Efficient Large-Scale Stereo Matching论文解析
    Setting up caffe on Ubuntu
    Kubernetes配置Secret访问Harbor私有镜像仓库
  • 原文地址:https://www.cnblogs.com/LuckyZLi/p/12888327.html
Copyright © 2011-2022 走看看