委托原来如此简单
什么是委托?
委托是存有對某個方法的引用的一種引用類型變量。引用可在運行時被改變。委托特別用于實現事件和回調方法!
使用委托:
public delegate void MyDelegateDemo();private void HelloWorld(){Console.WriteLine("Hello World");}public void Print(){MyDelegateDemo myDelegateDemo;myDelegateDemo = HelloWorld;myDelegateDemo();}首先我們可以看出我們使用委托時:
第一步定義一個委托類型?
第二步實例化委托
MyDelegateDemo?myDelegateDemo;第三步定義一個跟委托類型相匹配的函數
private void HelloWorld(){Console.WriteLine("Hello World");}第四步將函數交給委托實列
myDelegateDemo = HelloWorld;最后我們才能使用該委托!
說一說我對委托的理解:
比如你知道定義一個普通變量
這個變量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("離開了打印店");}但是這樣也很煩 我們還需要自己去定義一個方法呢!
所以我們使用匿名方法去掉這個步驟
那使用匿名方法讓代碼看起來不是那么的簡潔,我們還能不能優化呢?
c#作為世界上最好的語言但是也是可以的!
使用Lambda來簡化,
最后變成了
最后大家如果喜歡我的文章,還麻煩給個關注, 希望net生態圈越來越好!
總結
- 上一篇: [活动 3.30]MAUI 跨平台应用开
- 下一篇: 你真的了解扩展方法吗?