大家帮看看这个匿名方法的声明方式,不太理解
如下:
Func<string, string> anonDele = delegate(string param)
{
return param;
};
不明白为什么Func里面写两个string??,因为有一个传入,一个返回值?
如果是多个传入,一个返回该怎么写??
希望高手讲解一下.谢谢...
------解决方案--------------------更多信息请参考:http://msdn.microsoft.com/zh-cn/library/bb534960.aspx
------解决方案--------------------最后一个参数是返回值,前面是参数。最多可以定义8个(.NET 3)或者16个(.NET 4)参数。
------解决方案--------------------其实你可以定义
public delegate R MyFunc<R,P>(P para);
并且写代码
MyFunc<int, string> pp = delegate(string param)
{
return int.Parse( param);
};
或者你也可以定义
public delegate P MyFunc<R,P>(R para1, P para2 );
然后使用这个delegate类型实现方法
MyFunc<int, string> pp = delegate( int p1, string p2)
{
return p1+p2 ;
};
等等。
你可以看到,实际上哪一个是输入类型、哪一个标记输出类型,全在你的定义,而不是规定死了。你需要看懂 Func<A,B> 类型定义,这时候才知道A和B分别用在那个代码模板的什么地方,哪一个是参数、哪一个是返回值。这一切,需要你稍微深入一步去看源代码才能明白,而不是靠死记硬背。