深入理解C#委托delegate的使用

 更新时间:2022年08月01日 11:22:55   作者:旧时量刑  
本文主要介绍了C#委托delegate的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.什么是委托

委托就是委托某个方法来实现具体的功能,类似于:甲方委托乙方去实现需求;出租房屋人委托中介为其出租房屋。

委托是一种引用类型,从数据结构上来讲:委托和类一样,都是一直用户自定义类型。

2:委托的实现

委托是对方法的抽象和封装。委托对象实质上代表了方法的引用(即内存地址)他存储的就是一系列具有相同签名和返回类型的方法的地址

可以理解为函数的一个包装,它使得c#中的函数可以作为参数来被传递

使用时遵循三步走原则:定义委托、实例化委托,调用委托

调用委托时,委托包含的方法将被执行

委托有三种方法:命名方法委托、多播委托、匿名委托

 命名法委托

1:定义委托

修饰符 delegate 返回值类型 委托名 {参数列表}

public delegate void FirstDelegate ();

静态方法的实例化委托 

2:实例化委托

委托名 委托对象名=new 委托名{方法名}

FirstDelegate firstDelegate=new FirstDelegate(Test.First);

委托的方法可以是静态方法的名称,也可以是实例化方法的名称

方法:

public class Test
{
 
     public static void First()
     {
         Console.WriteLine("第一次实现静态方法类的委托");
     }
}

3:调用 

firstDelegate();

实例化方法的委托

2:实例化委托

委托名 委托对象名=new 委托名{方法名}

FirstDelegate firstDelegate=new FirstDelegate(new Test().First);

委托的方法可以是静态方法的名称,也可以是实例化方法的名称

方法:

public class Test
{
 
     public  void First()
     {
         Console.WriteLine("第一次实现实例化方法类的委托");
     }
}

3:调用

firstDelegate();

多播委托 

多播委托就是一个委托中注册多个方法,在注册方法时可以在委托中通过加号或则减号来实现添加或者撤销的方法。

例如 我想买饭吃 又想和奶茶 还想吃蛋糕,我委托一个人完不成,我需要委托三个人帮我完成,例如美团

1:定义委托

public class problem
{
     public delegate void BuyDelegate();
 
 
     static void mian()
     {
         BuyDelegate buyDelegate=new BuyDelegate(Buy.BuyFood);
         buyDelegate+=Buy.BuyCake;
         buyDelegate+=Buy.BuyTea;
 
         buyDelegate();
     }
}
 
public class Buy
{
    public void BuyFood()
    {
      Conssole.WriyeLine("买个螺狮粉");
    }
    public void BuyCake()
     {
      Conssole.WriyeLine("买个蛋糕");
 
    }
    public void BuyTea()
    {
       Conssole.WriyeLine("买杯奶茶");
    }
 
  
}

匿名委托

匿名委托就是 使用匿名的方法注册在委托上 ,实际上就是委托中通过定义代码块来实现委拖的作用

1:定义委托

修饰符 delegate 返回值类型 委托名(参数列表)

2:实例化委托

委托名 委托对象=delegate

  代码块; 
};

3:调用匿名委托

委托对象(参数列表);

1:实现水果买卖

public class program
{
    public delegate void BuyFruit(double price,double count)
 
    static void main(string[] arg)
    {
 
        BuyFurit buyFruit=delegate
        {
           Console.WriteLine("水果总价为"+price*count);
        };
        buyFruit(3,5);
    }
 
}

什么时候适用委托

1:委托相当于用方法作为另一方法参数,同时,也可以实现在两个不能直接调用的方法中做桥梁,如在多线程中的跨线程的方法调用就得用委托。

2:委托使得一个方法可以作为另一个方法的参数进行传递,这就是委托最大的作用。使用委托可以将同类型的方法绑定到同一个变量上,当调用此变量时就可以一次调用绑定的方法,很方便。

到此这篇关于深入理解C#委托delegate的使用的文章就介绍到这了,更多相关C#委托delegate内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c# WPF中System.Windows.Interactivity的使用

    c# WPF中System.Windows.Interactivity的使用

    这篇文章主要介绍了c# WPF中System.Windows.Interactivity的使用,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#如何将Access中以时间段条件查询的数据添加到ListView中

    C#如何将Access中以时间段条件查询的数据添加到ListView中

    这篇文章主要介绍了C# 将Access中以时间段条件查询的数据添加到ListView中,需要的朋友可以参考下
    2017-07-07
  • C#实现自动生成电子印章

    C#实现自动生成电子印章

    网络办公正逐渐成为常态,无纸化办公也是一个潮流。本文将利用C#语言实现自动生成电子印章功能,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-08-08
  • C#中利用Lotus notes公共邮箱发送邮件的方法

    C#中利用Lotus notes公共邮箱发送邮件的方法

    这篇文章主要给大家介绍了关于C#中利用Lotus notes公共邮箱发送邮件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定参考学习价值,需要的朋友们下面来一起看看吧。
    2018-02-02
  • C#中委托的基础入门与实现方法

    C#中委托的基础入门与实现方法

    这篇文章主要给大家介绍了关于C#中委托的基础入门与实现方法的相关资料,究竟什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西,需要的朋友可以参考下
    2021-08-08
  • C#入门之索引器使用实例

    C#入门之索引器使用实例

    这篇文章主要介绍了C#的索引器使用方法,对此,C#初学者应予以牢固掌握,需要的朋友可以参考下
    2014-08-08
  • C#实现Nginx平滑加权轮询算法

    C#实现Nginx平滑加权轮询算法

    这篇文章主要为大家详细介绍了C#实现Nginx平滑加权轮询算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • WPF MVVM制作发送短信小按钮

    WPF MVVM制作发送短信小按钮

    这篇文章主要为大家详细介绍了WPF MVVM发送短信小按钮的制作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • C# WinForm快捷键设置技巧

    C# WinForm快捷键设置技巧

    这篇文章主要给大家介绍C# winform快捷键设置技巧,涉及到C winform快捷键相关知识,对C winform知识感兴趣的朋友可以参考下本篇文章
    2015-10-10
  • Winform消除button按下出现的虚线简单实现方法

    Winform消除button按下出现的虚线简单实现方法

    这篇文章主要介绍了Winform消除button按下出现的虚线简单实现方法,通过重写button设置Selectable参数实现该功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08

最新评论