c#基础之委托

委托就像是一个引用指针,可以指向相同类型的函数。

通过委托可以把函数像参数一样传递给另一个函数,这样能够减小程序的耦合,能实现回调函数。

例如

class Program
    {
        delegate void feeling();
        static void smile()
        {
            Console.WriteLine("哈哈");
        }
        static void crying()
        {
            Console.WriteLine("呜呜呜");
        }
        static void Expression(feeling feeling)
        {
            Console.WriteLine("我想要");
            feeling();
        }
        static void Main(string[] args)
        {
            List<string> ii = new List<string>();
            Expression(crying);
            Expression(smile);
        }

    }

可以在委托里使用泛型,例如:

class Program
    {

        static int PickOne(int a, int b,MyRule<int> rule)
        {
            if (rule(a, b)) return a;
            else return b;
        }
        
        static bool MySpecialRule(int x,int y)
        {
            return true;
        }
        delegate bool MyRule<T>(T x, T y);
        static void Main(string[] args)
        {
            var rule = new MyRule<int>(MySpecialRule);
            rule(0, 9);
            PickOne(2, 3, MySpecialRule);
        }

    }

.net框架提供了两种委托方式 Func和Action,不需要再声明委托,Action不提供返回类型,Func提供返回类型,Action支持16个重载,Func多一个,因为Func最后一个参数需要传递返回值类型

posted @ 2023-02-28 10:30  东云博士  阅读(25)  评论(0)    收藏  举报