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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

委托原来如此简单

發布時間:2023/12/4 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 委托原来如此简单 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是委托?

委托是存有對某個方法的引用的一種引用類型變量。引用可在運行時被改變。委托特別用于實現事件和回調方法!

使用委托:

public delegate void MyDelegateDemo();private void HelloWorld(){Console.WriteLine("Hello World");}public void Print(){MyDelegateDemo myDelegateDemo;myDelegateDemo = HelloWorld;myDelegateDemo();}

首先我們可以看出我們使用委托時:

第一步定義一個委托類型?

public delegate void MyDelegateDemo();

第二步實例化委托

MyDelegateDemo?myDelegateDemo;

第三步定義一個跟委托類型相匹配的函數

private void HelloWorld(){Console.WriteLine("Hello World");}

第四步將函數交給委托實列

myDelegateDemo = HelloWorld;

最后我們才能使用該委托!

說一說我對委托的理解:

比如你知道定義一個普通變量

int?i;

這個變量i會在后續的方法中使用

比如說

private void PrintInt(int i){Console.WriteLine(i);}

我們后續需要輸出不同的值的時候,改變一下變量即可!

那么我們定義一個委托變量

MyDelegateDemo myDelegateDemo;

和普通變量不同的是MyDelegateDemo類型是我們自己定義的類型而已。

使用

private void PrintDelagate(MyDelegateDemo myDelegateDemo){myDelegateDemo();}

其實和普通變量使用方法一樣而已!

而區別在于

普通變量存放的是不同的變量

而委托變量存放的是不同的方法

通過這個例子我們看出

private?void?HelloWorld(){Console.WriteLine("Hello World");}public void Print(){PritfDocument(HelloWorld);}private?void?PritfDocument(MyDelegateDemo?myDelegateDemo){Console.WriteLine("來到了打印店");Console.WriteLine("打印的內容是");myDelegateDemo();Console.WriteLine("離開了打印店");}

可以看到輸出內容是:

簡化

我們在使用委托的時候定義起來是不是很麻煩,覺得很煩,微軟也想到了這一點!

所以Action和Func就出來了,這兩個有什么區別呢?

兩者的區別在于Action沒有返回值,而Func有返回值!

那么我們就可以簡化一下PritfDocument方法

private void PritfDocument(Action myDelegateDemo){Console.WriteLine("來到了打印店");Console.WriteLine("打印的內容是");myDelegateDemo();Console.WriteLine("離開了打印店");}

但是這樣也很煩 我們還需要自己去定義一個方法呢!

所以我們使用匿名方法去掉這個步驟

PritfDocument(delegate () { Console.WriteLine("Hello World"); }private void PritfDocument(Action myDelegateDemo){Console.WriteLine("來到了打印店");Console.WriteLine("打印的內容是");myDelegateDemo();Console.WriteLine("離開了打印店");});

那使用匿名方法讓代碼看起來不是那么的簡潔,我們還能不能優化呢?

c#作為世界上最好的語言但是也是可以的!

使用Lambda來簡化,

最后變成了

PritfDocument(()=>?Console.WriteLine("Hello?World"));private void PritfDocument(Action myDelegateDemo){Console.WriteLine("來到了打印店");Console.WriteLine("打印的內容是");myDelegateDemo();Console.WriteLine("離開了打印店");}

最后大家如果喜歡我的文章,還麻煩給個關注, 希望net生態圈越來越好!

總結

以上是生活随笔為你收集整理的委托原来如此简单的全部內容,希望文章能夠幫你解決所遇到的問題。

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