System.Action的使用(lambda 表达式)
Posted mzy-google
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System.Action的使用(lambda 表达式)相关的知识,希望对你有一定的参考价值。
对于Action的使用方法使用如下:
namespace ConsoleApp1 { class Program { static void Main(string[] args) { string first = "First"; var action = new Action(() => { Console.WriteLine(first); }); action(); var action2 = new Action<string>((s) => { Console.WriteLine($"Action<T>:{s}"); }); action2(first); var action3 = new Action<string, string>((s1, s2) => { Console.WriteLine($"Action<T1,T2>:{s1},{s2}"); }); action3(first, "second"); } } }
使用dotPeek通过反编译,得到代码:
namespace ConsoleApp1 { internal class Program { private static void Main(string[] args) { string first = "First"; ((Action) (() => Console.WriteLine(first)))(); ((Action<string>) (s => Console.WriteLine(string.Format("Action<T>:{0}", (object) s))))(first); ((Action<string, string>) ((s1, s2) => Console.WriteLine(string.Format("Action<T1,T2>:{0},{1}", (object) s1, (object) s2))))(first, "second"); } } }
下面写一种与反编译出来的相似的方法
namespace ConsoleApp1 { class Program { static void Main(string[] args) { string first = "First"; var action = new Action(() => { Console.WriteLine(first); }); action(); var action2 = new Action<string>((s) => { Console.WriteLine($"Action<T>:{s}"); }); action2(first); var action3 = new Action<string, string>((s1, s2) => { Console.WriteLine($"Action<T1,T2>:{s1},{s2}"); }); action3(first, "second"); new Action(() => { Console.WriteLine(first); })(); new Action<string>((s) => { Console.WriteLine($"Action<T>:{s}"); })(first); new Action<string, string>((s1, s2) => { Console.WriteLine($"Action<T1,T2>:{s1},{s2}"); })(first, "second"); } } }
看一下反编译的结果:
namespace ConsoleApp1 { internal class Program { private static void Main(string[] args) { string first = "First"; ((Action) (() => Console.WriteLine(first)))(); ((Action<string>) (s => Console.WriteLine(string.Format("Action<T>:{0}", (object) s))))(first); ((Action<string, string>) ((s1, s2) => Console.WriteLine(string.Format("Action<T1,T2>:{0},{1}", (object) s1, (object) s2))))(first, "second"); ((Action) (() => Console.WriteLine(first)))(); string str1 = first; ((Action<string>) (s => Console.WriteLine(string.Format("Action<T>:{0}", (object) s))))(str1); string str2 = first; string str3 = "second"; ((Action<string, string>) ((s1, s2) => Console.WriteLine(string.Format("Action<T1,T2>:{0},{1}", (object) s1, (object) s2))))(str2, str3); } } }
反编译结果是帮我们定义了几个变量。
以上是关于System.Action的使用(lambda 表达式)的主要内容,如果未能解决你的问题,请参考以下文章
lambda 表达式使用 select 和 where 子句连接多个表
(Linq/Lambda) 使用 2 个 DBContext 连接 2 个或更多表
在 python 3 中使用 map 和 lambdas,为啥这段代码不会更新 sql 表