日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

作者:舊時量刑 ? 更新時間: 2022-09-24 編程語言

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:委托使得一個方法可以作為另一個方法的參數進行傳遞,這就是委托最大的作用。使用委托可以將同類型的方法綁定到同一個變量上,當調用此變量時就可以一次調用綁定的方法,很方便。

原文鏈接:https://blog.csdn.net/hyyjiushiliangxing/article/details/126023406

欄目分類
最近更新