从一本书中阅读这行代码示例:
Func<string,int> returnLength;
returnLength = delegate (string text) { return text.Length; };
Console.WriteLine(returnLength("Hello"));上面写着
Func<string,double,int>等效于表单public delegate int SomeDelegate(string arg1, double arg2)的委托类型。
那么Func是代表?那么,我们在代码示例中再次定义的委托是什么?我们从Func中定义一个与delegate类似的变量,然后再将它赋值给另一个delegate?我非常困惑,无法理解这个概念。:(
有人能解释一下吗?
发布于 2014-01-02 05:29:37
所以Func 是?
是的,它的定义如下:
public delegate TResult Func<in T, out TResult>(T arg)被描述为:
封装具有一个参数并返回由
TResult参数指定的类型的值的方法。
有关更多信息,请阅读漏斗代表。
,那么我们在代码示例中再次定义的委托是什么?
这是我们创建的匿名方法,用于将其赋值给Func-typed变量。您也可以使用命名方法或lambda表达,只要输入和返回类型与Func泛型参数匹配。
我们从Func中定义了一个与委托类似的变量,然后再将它分配给另一个委托?
不,我们创建一个变量类型为 Func<string, int>,然后创建一个与该类型匹配的委托,并将其分配给该变量。
来自MSDN的其他来源:
发布于 2014-01-02 05:31:02
你只需要写同样的代码
Func<string,int> returnLength = (s) => {return s.Length;}将委托分配给Func就像将一个变量赋值给另一个..。
发布于 2014-01-02 05:31:16
您的代码也可以这样表示:
Func<string,int> returnLength = delegate (string text) { return text.Length; };
Console.WriteLine(returnLength("Hello"));函数是代表。
Func<string, int>是声明,delegate (string text) { return text.Length; }是您要分配的函数。string text)并返回一个整数(return text.Length;)。
这将返回5,因为“Hello5”的text.Length是5,而不是在本例中创建两个委托,而是分配一个。
https://stackoverflow.com/questions/20876831
复制相似问题