日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

委托重载和使用

發布時間:2025/6/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 委托重载和使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
重新整理一下,趁著現在項目有時間,還有那些語法糖,哎,最二了!

MSDN的解釋:https://msdn.microsoft.com/zh-cn/library/vstudio/ms173171(v=vs.110).aspx

? ??委托是一種定義方法簽名的類型。?當實例化委托時,您可以將其實例與任何具有兼容簽名的方法相關聯。?您可以通過委托實例調用方法。

? ? 委托用于將方法作為參數傳遞給其他方法。?事件處理程序就是通過委托調用的方法。?您可以創建一個自定義方法,當發生特定事件時某個類(例如 Windows 控件)就可以調用您的方法。?

與委托的簽名(由返回類型和參數組成)匹配的任何可訪問類或結構中的任何方法都可以分配給該委托。?方法可以是靜態方法,也可以是實例方法。?這樣就可以通過編程方式來更改方法調用,還可以向現有類中插入新代碼。?只要知道委托的簽名,就可以分配您自己的方法。

委托具有以下特點:

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

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

  • 委托可用于定義回調方法。

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

  • 方法不必與委托簽名完全匹配。?

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

  • ?C# 3.0 引入了 Lambda 表達式,利用它們可以更簡練地編寫內聯代碼塊。?匿名方法和 Lambda 表達式(在某些上下文中)都可編譯為委托類型。?這些功能統稱為匿名函數。?有關 lambda 表達式的更多信息,請參見?匿名函數(C# 編程指南)。



namespace
GXProjectTest.Lambda {/*委托*/public class TestDelegate{public void Demo1(Test<int> test){if (test != null)test(1);}public string Demo2(Test<int, string, string> test){if (test != null){return test(1, "sss");}return string.Empty;}public string Demo3(TestStr<int, string, string> tt){if (tt != null)return tt(1, "");return string.Empty;}public void Demo4(Test t){if (t != null)t();}}public delegate void Test();public delegate void Test<in T>(int a);public delegate string Test<in T1, in T2, out TResult>(int a, string b);public delegate string TestStr();public delegate string TestStr<in T>(int a);public delegate string TestStr<in T1, in T2, out TResult>(int a, string b); }

測試代碼

public partial class TestDelegateWeb : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){//測試 TestDelegate testDelegate = new TestDelegate();testDelegate.Demo1(Test);//有參數的 testDelegate.Demo2(Test1);testDelegate.Demo3(Test1);testDelegate.Demo4(Test);//沒有參數的 }public void Test(){}public void Test(int a){//隨便寫 }public string Test1(int a, string b){return string.Empty;}}

?

轉載于:https://www.cnblogs.com/wucaifang/p/4589131.html

總結

以上是生活随笔為你收集整理的委托重载和使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。