91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#泛型委托是什么

發布時間:2021-12-02 11:19:01 來源:億速云 閱讀:198 作者:iii 欄目:編程語言

本篇內容主要講解“C#泛型委托是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C#泛型委托是什么”吧!

C# 泛型委托學習之前首先來看看什么是C# 委托,C# 委托是一種引用方法的類型。一旦為委托分配了方法,C# 委托將與該方法具有完全相同的行為。委托方法的使用可以像其他任何方法一樣,具有參數和返回值,如下面的示例所示:與委托的簽名(由返回類型和參數組成)匹配的任何方法都可以分配給該委托。這樣就可以通過編程方式來更改方法調用,還可以向現有類中插入新代碼。只要知道委托的簽名,便可以分配自己的委托方法。

C# 泛型委托代碼

public delegate int PerformCalculation(int x, int y);

將方法作為參數進行引用的能力使委托成為定義回調方法的理想選擇。例如,可以向排序算法傳遞對比較兩個對象的方法的引用。分離比較代碼使得可以采用更通用的方式編寫算法。

C# 委托具有以下特點:

◆C# 委托類似于 C++ 函數指針,但它是類型安全的。

◆C# 委托允許將方法作為參數進行傳遞。

◆C# 委托可用于定義回調方法。

◆C# 委托可以鏈接在一起;例如,可以對一個事件調用多個方法。

◆方法不需要與委托簽名精確匹配。

◆C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數傳遞,以代替單獨定義的方法。

C# 泛型委托的理解及應用:

C# 委托可以定義自己的類型參數。引用泛型委托的代碼可以指定類型參數以創建已關閉的構造類型,就像實例化泛型類或調用泛型方法一樣,如下例所示:

C# 泛型委托代碼

public delegate void Del﹤T﹥(T item);  public static void Notify(int i) { }   Del﹤int﹥ m1 = new Del﹤int﹥(Notify);

C# 2.0 版具有稱為方法組轉換的新功能,此功能適用于具體委托類型和泛型委托類型,并使您可以使用如下簡化的語法寫入上一行:

C# 泛型委托代碼

Del﹤int﹥ m2 = Notify;

在泛型類內部定義的委托使用泛型類類型參數的方式可以與類方法所使用的方式相同。

C# 泛型委托代碼

class Stack﹤T﹥  {      T[] items;      int index;       public delegate void StackDelegate(T[] items);  }

引用委托的代碼必須指定包含類的類型變量,如下所示:

C# 泛型委托代碼

private static void DoWork(float[] items) { }   public static void TestStack()  {      Stack﹤float﹥ s = new Stack﹤float﹥();      Stack﹤float﹥.StackDelegate d = DoWork;  }

根據典型設計模式定義事件時,泛型委托尤其有用,因為發送方參數可以為強類型,不再需要強制轉換成 Object,或反向強制轉換。

C# 泛型委托代碼

delegate void StackEventHandler﹤T, U﹥(T sender, U eventArgs);   class Stack﹤T﹥  {      public class StackEventArgs : System.EventArgs { }      public event StackEventHandler﹤Stack﹤T﹥,   StackEventArgs﹥ stackEvent;       protected virtual void OnStackChanged(StackEventArgs a)      {          stackEvent(this, a);      }  }   class SampleClass  {      public void HandleStackChange﹤T﹥(Stack﹤T﹥ stack,   Stack﹤T﹥.StackEventArgs args) { }  }   public static void Test()  {      Stack﹤double﹥ s = new Stack﹤double﹥();      SampleClass o = new SampleClass();      s.stackEvent += o.HandleStackChange;  }

到此,相信大家對“C#泛型委托是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平和县| 固镇县| 牙克石市| 红安县| 榆社县| 静安区| 石棉县| 安平县| 贡觉县| 绍兴市| 太保市| 龙海市| 阿克| 洛隆县| 北安市| 鲜城| 舟山市| 古交市| 伽师县| 阳原县| 务川| 兴义市| 丹阳市| 邹城市| 凤凰县| 儋州市| 梁河县| 五原县| 麦盖提县| 松阳县| 夏津县| 盐城市| 海阳市| 潞西市| 延川县| 康定县| 夏邑县| 枣强县| 朝阳县| 英吉沙县| 库伦旗|