【发布时间】:2015-07-03 18:31:33
【问题描述】:
我有这行代码,我只是想知道这行代码是做什么的
Tracer.Initializer = () => XmlConfigurator.Configure();
是 lambda 表达式吗?
【问题讨论】:
标签: c# asp.net-mvc lambda
我有这行代码,我只是想知道这行代码是做什么的
Tracer.Initializer = () => XmlConfigurator.Configure();
是 lambda 表达式吗?
【问题讨论】:
标签: c# asp.net-mvc lambda
是的,它是Lambda,它使用空括号指定零输入参数:
() => SomeMethod()
lambda 表达式是一个匿名函数,可用于创建委托或表达式树类型。通过使用 lambda 表达式,您可以编写可以作为参数传递或作为函数调用的值返回的局部函数。 Lambda 表达式对于编写LINQ 查询表达式特别有用。
要创建 lambda 表达式,请在 lambda 运算符=> 的左侧指定输入参数(如果有),并将表达式或语句块放在另一侧。例如,lambda 表达式(x) => x * x 指定了一个名为 x 的参数并返回 x 平方的值
请注意,在您的问题中,表达式 lambda 的主体由方法调用组成。但是,如果要创建在 .NET Framework 之外计算的表达式树,例如在 SQL Server 中,则不应在 lambda 表达式中使用方法调用。这些方法在 .NET 公共语言运行时的上下文之外没有任何意义。
【讨论】:
这个 lambda 表示无论何时调用 Tracer.Initializer(),都会调用 XmlConfigurator.Configure()。
【讨论】:
是的,可以把它想象成一种可以存储在变量中的方法。
你也可以使用像
这样的参数(a) => foo.func(a)
【讨论】: