解决方案 »

  1.   

     
    static void Main(string[] args)
    {
        int result = fff(1, 2, 3);
        Console.WriteLine(result);//6
    }
    static Func<int, int, int, int> fff = delegate(int param1, int param2, int param3) { return param1 + param2 + param3; };
      

  2.   

    更多信息请参考:http://msdn.microsoft.com/zh-cn/library/bb534960.aspx
      

  3.   

    最后一个参数是返回值,前面是参数。最多可以定义8个(.NET 3)或者16个(.NET 4)参数。
      

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

  5.   

    这个很详细,确实是这么回事.Action和Func是C#定义好的委托,方便我们直接使用。Action是纯输入,输出为void,而Func是输入、输出~
      

  6.   

    F12一下就知道Fun的最后一项是out的返回类型,对应Action是void的