C# 关于委托知识点

一、:

1、委托是函数的容器,用于装载或传递函数的(可以作为函数的参数)

2、可以理解为表示函数的变量类型

3、委托本质是一个类,用来定义函数的类型(返回值和参数的类型)

4、不同的函数 必须对应和各自“格式”一致的委托 也就是说 比如定义的委托是无参无返回的 那么装的函数就必须是无参无返回的

二、

1、委托的基本语法

关键字:delegate

语法:访问修饰符 delegate 返回值 委托名(参数列表);

 

写在哪里:委托一般写在nameSpace 和 class语句中

更多写在nameSpace

 

三、

委托的使用:

using System.Security.Cryptography.X509Certificates;

namespace ConsoleDelegate
{
    //二、委托使用
    //(1)
    //定义一个委托 无参无返回委托
    //这里只是定义了规则 并没有使用
    public delegate void MyDelegate1();
    //委托规则的声明 是不能重名(同一语句块中)
    //表示用来装载或传递 返回值为int 有一个int参数的函数的 委托 
    public delegate int MyDelegate2(int a);

    public class Delegate
    {       
        //(2)
        //定义一个与委托签名匹配的方法
        public static void ShowMessage() 
        {
            Console.WriteLine("委托1");
        }
        public static void ShowMessage2() 
        {
            Console.WriteLine("委托2");
        }

        //定义一个带参数的方法
        public static int Showint(int a) 
        {
            return a;
        }

        static void Main(string[] args)
        {
            //(3)
            //第一种装载委托的方式
            //专门用来装载 函数的 容器
            MyDelegate1 del1 = new MyDelegate1(ShowMessage);
            MyDelegate2 del2 = new MyDelegate2(Showint);
            //第二种装载委托的方式
            MyDelegate1 del3 = ShowMessage;
            MyDelegate2 del4 = Showint;

            //(4)
            //第一种 启用委托方式
            del1.Invoke();
            Console.WriteLine(del2.Invoke(2));
            //第二种启用委托方式
            del3();
            int c = del4(3);
            Console.WriteLine(c);

            Console.WriteLine("----------------------");
            //三、委托可以存储多个函数(委托多播 增、删
            //
            MyDelegate1 del5 = ShowMessage;
            del5 += ShowMessage2;
            del5();

            MyDelegate1 del6 = new MyDelegate1(ShowMessage);
            del6 += ShowMessage2;
            del6.Invoke();

            //
            del5 -= ShowMessage;
            del5();


            //----------------
            //TestDelegate类
            TestDelegate testDelegate = new TestDelegate();
            testDelegate.TestFun(del1, del2);
            

        }
    }

    //四、使用定义好的委托

    //1、委托变量是函数的容器
    //2、委托常用在:
    //(1)作为类的成员
    //(2)用来作为函数的参数

    class TestDelegate 
    {
        MyDelegate1 delegate1;
        MyDelegate2 delegate2;

        public void TestFun(MyDelegate1 myDelegate1, MyDelegate2 myDelegate2) 
        {
            //先执行一些别的逻辑,当这些逻辑执行完了,再传入的函数
            int i = 2 * 3;
            i = i + 6;

           delegate1 = myDelegate1;
           delegate2 = myDelegate2;
           Console.WriteLine(delegate1+"$"+delegate2);
        }
    }

}

 

posted on 2025-08-09 23:17  C#我喜欢  阅读(17)  评论(0)    收藏  举报

导航