C#委托

本文介绍了 C# 中的委托概念及其应用。详细解释了如何定义和使用委托,并展示了通过委托绑定多个方法实现代码扩展性的实例。此外,还讨论了委托在事件处理中的重要作用及使用时的注意事项。

委托:

委托定义了方法的类型,使得方法可以作为另一个方法的参数来进行传递,这样可以在程序中避免使用大量的判断语句,同时使程序具有更好的扩展性。

可以将多个方法绑定到同一个委托变量上,当调用该委托变量时,所有绑定到该委托变量上的方法将会被依次调用。

 

例:

public delegate void DelegateModel(string name);//定义委托

    public class Delegate
    {
        public DelegateModel DM;//声明委托变量

        public void Function(string name, DelegateModel dm)
        {
            dm(name);
        }
    }

    class Program
    {
        public static void Fun1(string name)
        {
            Console.WriteLine("Fun1:"+name);
        }

        public static void Fun2(string name)
        {
            Console.WriteLine("Fun2:" + name);
        }

        static void Main(string[] args)
        {
            Delegate A = new Delegate();
            Console.WriteLine("多个方法绑定到同一个委托上。");
            A.DM = Fun1;
            A.DM += Fun2;
            A.Function("C#",A.DM);
            Console.WriteLine("解除委托绑定。");
            A.DM -= Fun1;
            A.Function("C#", A.DM);
            Console.ReadKey();
           
        }
    }

 

 

结果:

多个方法绑定到同一个委托上。

Fun1:C#

Fun2:C#

解除委托绑定。

Fun2:C#

委托注意事项:

1,委托隐含具有sealed属性,不能用来派生新的类型。

2,,委托的最大的作用就是为类的事件绑定事件处理程序。

3,在调用委托前要判断委托是否为NULL,不为空才能调用。

 

改进:

 public delegate void DelegateModel(string name);//定义委托

    public class Delegate
    {
        public DelegateModel DM;//声明委托变量

        public void Function(string name)
        {
            if (DM != null)//是否有方法绑定到该委托上
            {
                DM(name);
            }
        }
    }

    class Program
    {
        public static void Fun1(string name)
        {
            Console.WriteLine("Fun1:"+name);
        }

        public static void Fun2(string name)
        {
            Console.WriteLine("Fun2:" + name);
        }

        static void Main(string[] args)
        {
            Delegate A = new Delegate();
            Console.WriteLine("多个方法绑定到同一个委托上。");
            A.DM = Fun1;
            A.DM += Fun2;
            A.Function("C#");
            Console.WriteLine("解除委托绑定。");
            A.DM -= Fun1;
            A.Function("C#");
            Console.ReadKey();
           
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值