日期:2014-05-17  浏览次数:21220 次

大家帮看看这个匿名方法的声明方式,不太理解
如下:


Func<string, string> anonDele = delegate(string param)
            {
                return param;
            };



不明白为什么Func里面写两个string??,因为有一个传入,一个返回值?

如果是多个传入,一个返回该怎么写??

希望高手讲解一下.谢谢...
C# 匿名方法

------解决方案--------------------
更多信息请参考: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分别用在那个代码模板的什么地方,哪一个是参数、哪一个是返回值。这一切,需要你稍微深入一步去看源代码才能明白,而不是靠死记硬背。