我想知道是否有人可以解釋什麼是Func<int, string>
以及如何使用它的一些明確的例子。Func的解釋
Func的解釋
回答
你熟悉一般的代表?我有一個關於delegates and events的頁面,如果不是這樣,可能會有幫助,但它更適合於解釋兩者之間的差異。
Func<T, TResult>
只是一個普通的委託 - 工作出它通過與聲明中的相應類型參數(int
和string
)更換類型參數(T
和TResult
)在任何特定的情況意味着。我也給它改名,以避免混淆:
string ExpandedFunc(int x)
換句話說,Func<int, string>
是代表一個函數獲取int
參數並返回一個string
的委託。
Func<T, TResult>
經常在LINQ中使用,既用於投影也用於謂詞(在後一種情況下,TResult
始終爲bool
)。例如,您可以使用Func<int, string>
將一系列整數投影到一系列字符串中。 Lambda表達式通常在LINQ用於創建相關代表:
Func<int, string> projection = x => "Value=" + x;
int[] values = { 3, 7, 10 };
var strings = values.Select(projection);
foreach (string s in strings)
{
Console.WriteLine(s);
}
結果:
Value=3
Value=7
Value=10
這是一個代表,它將一個int
作爲參數並返回一個string
類型的值。
下面是它的用法的例子:
using System;
class Program
{
static void Main()
{
Func<Int32, String> func = bar;
// now I have a delegate which
// I can invoke or pass to other
// methods.
func(1);
}
static String bar(Int32 value)
{
return value.ToString();
}
}
謝謝安德魯。你的意思是寫func(1)而不是bar(1)? – zSynopsis 2009-05-18 19:53:05
是的,我做到了!感謝您的更正! – 2009-05-18 19:56:51
一個Func<int, string>
吃整數並返回一個字符串。那麼,什麼吃ints並返回字符串?這個怎麼樣...
public string IntAsString(int i)
{
return i.ToString();
}
在那裏,我剛剛構造了一個函數,吃整數和返回字符串。我將如何使用它?
var lst = new List<int>() { 1, 2, 3, 4, 5 };
string str = String.Empty;
foreach(int i in lst)
{
str += IntAsString(i);
}
// str will be "12345"
不是很性感,我知道,但這是一個很簡單的想法,很多技巧是基於。現在,我們來使用一個Func。
Func<int, string> fnc = IntAsString;
foreach (int i in lst)
{
str += fnc(i);
}
// str will be "1234512345" assuming we have same str as before
而不是調用IntAsString每個構件上的,我創建對它的引用名爲FNC(這些參考文獻中的方法被稱爲delegates)和使用該代替。 (記住fnc吃ints並返回字符串)。
這個例子不是非常性感,但你會看到很多聰明的東西是基於簡單的功能,代表和想法extension methods。
這個東西我見過的最好的引物之一是here。他有更多真實的例子。 :)
- 1. 請.NET約Func鍵代表解釋4.0
- 2. 解釋無效(*信號(INT SIGNO,無效*(FUNC)(INT)))(INT)
- 3. 請解釋System.Linq.Enumerable.Where(Func <T,int,bool>謂詞)
- 4. 難以理解func(&_)in c
- 5. 你可以解釋func關鍵字和函數名稱之間的參數嗎?
- 6. 能否請您解釋一下下面的代碼,尤其是FUNC聲明
- 7. 運行Python解釋器的Python解釋器:解釋行爲
- 8. 命令解釋器/解釋
- 9. 請解釋並解釋
- 10. 不與FUNC printf的理解用C
- 11. 的Math.random()解釋
- 12. IEnumerable的解釋
- 13. NSMutableArray的解釋
- 14. PhoneGap的解釋
- 15. ArrayList的解釋
- 16. setDelegate的解釋
- 17. NSLayoutAttribute的解釋
- 18. dFdx的解釋
- 19. Radixsort的解釋
- 20. ocaml的解釋
- 21. cvSeqPartition()的解釋?
- 22. 解釋
- 23. 解釋
- 24. 解釋
- 25. 解釋
- 26. 列表解析的解釋
- 27. 理解的Rails/PG解釋
- 28. 的Thread.join()的解釋
- 29. 試圖去理解與FUNC WaitGroup
- 30. 無法理解FUNC <Type>代碼
「換句話說,它是一個代表一個函數,它接受一個int參數並返回一個字符串。」 只是爲了避免混淆別人,我會清楚你在說Func在這裏而不是Func 。 很明顯,如果你理解泛型類型和委託,但對於那些不需要它的人來說,函數kunc委託給一個接受int參數並返回一個字符串的函數是Func 。 –
2009-05-18 17:02:40