泛型委托学习(Func和Action)

来源:互联网 发布:网络古典电台哪个好 编辑:程序博客网 时间:2024/05/17 08:47



Func<TParams,TResult>

泛型委托。TParams是此委托封装的方法的参数类型,可以有0个或多个  但最多不能超过4个   TResult返回值类型

可以使用此委托表示一种能以参数形式传递的方法,而不用显式声明自定义委托。该方法必须与此委托定义的方法签名相对应。也就是说,封装的方法必须具有一个通过值传递给它的参数,并且必须返回值

例1:

 static void Main(string[] args)
        {

           Func<string, string> funcTest = Demo;

            Console.WriteLine(funcTest("aaaaaa"));

       }

   static string Demo(string s)
        {
            return s.ToUpper();
        }

//输出AAAAAA

该 委托还可以与匿名方法一起使用!

例2:

  Func<string ,string>funTest=delegate(string s) { return s.ToUpper(); };

Console.WriteLine(funcTest("aaaaaa"));

输出结果与例1一样

 

还可以将 lambda 表达式分配给 Func 委托

例3

 

  Func<string, string> funcTest = s => s.ToUpper();

            Console.WriteLine(funcTest("aaaaaa"));

 

输出结果都一样  使用Lambda表达式 更加简洁

 

但如果是没有返回值的呢?因为Func委托是一定要有返回值的  所以就要用Action了

Action<TParams>

该委托方法无返回值 TParams参数类型列表  只能是1到4个

例:

 static void Main(string[] args)
        {

     Action<string> actionTest = Demo2;
            actionTest("zhang");

       }

     static void Demo2 (string s)
       {
           Console.WriteLine(s.ToUpper());
       }

输出ZHANG

(Action无法像Func与Lambda表达式连用)

 

0 0
原创粉丝点击