C#-Action
最近学到⼀个新的c#知识点-- Action ,在这⾥记录⼀下。
Action  是系统内置(或者说预定义)的⼀个委托类型,它可以指向⼀个没有返回值且没有参数的⽅法。通过ctrl+左键可以看到 Action 是这样定义的:
public delegate void Action();
上⾯还有⼀句描述:
//
// 摘要:
// 封装⼀个⽅法,该⽅法不具有参数且不返回值。
简单来说,有了 Action 我们在需要⽆返回值⽆参数的委托类型时就不⽤再⾃⼰⼿动声明了,可以直接使⽤ Action ,⽐如:
1static void Main(string[] args)
2        {
3            Action a = func;
4            a();
5        }
6public static void func()
7        {
8            Console.WriteLine("⼀个⽆参数⽆返回值的⽅法⽰例");
9        }
10/*
11        * ⼀个⽆参数⽆返回值的⽅法⽰例
12*/
学到这⾥时我很疑惑, Action 只能引⽤⽆返回值⽆参数的⽅法那它的局限性岂不是⾮常⼤?
原来系统对 Action 做了扩展,即 Action<> ,可以通过泛型来指定 Action 所引⽤的⽅法的参数数量和类型,它最多⽀持⼗六个参数,除⾮极特殊的情况否则应该不会有⼈写这么多参数的⽅法所以完全⾜够了。
这⾥我写了⼀个Action引⽤两个参数的⽅法的例⼦
writeline方法的作用1static void Main(string[] args)
2        {
3            Action<string,string> a = func;
4            a("hello"," world");
5
6        }
7public static void func(string str1,string str2)
8        {
9            Console.WriteLine(str1 + str2);
10        }
11public static void func()
12        {
13            Console.WriteLine("⼀个⽆参数⽆返回值的⽅法⽰例");
14        }
15/*
16        * hello world
17*/
注意我这⾥是直接重载了上⾯⽤到的func⽅法,由此可见Action<>会⾃动匹配符合参数列表的⽅法,如果未到则不会编译通过。
不要忘了,⽆论是 Action 还是 Action<> 都不可引⽤有返回值的⽅法!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。