在大多數情況下,代表和Func/Action是可以互換的,但是有些情況下它們是不可互換的?能力有一些細微的差異嗎?何時代表和Func/Action不可互換?
(是的,有很多的SO「行動VS代表」,但沒有回答的能力問題,當他們不能互換。)
通過「他們是不能互換的情況下,」我意味着你不能直接將Func替換成相應的代理(並委託相應的Func)。
在大多數情況下,代表和Func/Action是可以互換的,但是有些情況下它們是不可互換的?能力有一些細微的差異嗎?何時代表和Func/Action不可互換?
(是的,有很多的SO「行動VS代表」,但沒有回答的能力問題,當他們不能互換。)
通過「他們是不能互換的情況下,」我意味着你不能直接將Func替換成相應的代理(並委託相應的Func)。
由於喬恩斯基特在評論中說,我失蹤的事實,動作/ FUNC字面上代表(我認爲這是封裝委託類):
namespace System
{
public delegate TResult Func<in T, out TResult>(T arg);
}
因此,有代表和相應的功能/間無差異因爲Func/Action是代表行動。
Func鍵和行動是不能互換的所有
Func
和Action
都代表
Func<T,TResult>
應該總是返回一個值
Action<T>
永遠不應該返回一個值
什麼*確切*你的意思是可互換的?請注意,'Func' /'Action' *是代表,所以你不清楚你在說什麼......一個例子真的會有幫助。 – 2014-09-23 12:33:31
@JonSkeet我編輯了這個問題,使其更加清晰。 – anopse 2014-09-23 12:39:39
這還不是很清楚 - 「相應的代表」是什麼意思? 'Func'*是代表。代碼*中的一個具體示例*會更有幫助 - 目前的問題仍然聽起來像你錯過了'Func ''是委託類型 –
2014-09-23 12:50:44