使用lambda基于if语句执行操作

时间:2014-11-27 21:56:56

标签: c# .net lambda

如何使用lambda在一行中编写一个奇特的if语句?

我希望有这样的东西:

this.SomeBoolValue == false ? (() => MessageBox.Show("False!")) : (() => MessageBox.Show("True!"));

由于

2 个答案:

答案 0 :(得分:2)

这真的很蠢,你不应该这样做!但是出于教学目的,这里的代码可以做你想要的。

(this.SomeBoolValue == false
    ? (Action)(() => MessageBox.Show("False!"))
    : (Action)(() => MessageBox.Show("True!")))();
  1. 您需要将lambda转换为某种委托类型(此处为Action),因为默认情况下lambda表达式是无类型的 - 它们是根据上下文键入的。

  2. 你需要实际调用lambda,这就是为什么最后有()的原因。

答案 1 :(得分:0)

一些不使用lambda的“单行”变体都可以实现同样的目的:

if(this.SomeBoolValue == false) MessageBox.Show("False!"); else MessageBox.Show("True!");

MessageBox.Show(this.SomeBoolValue ? "True!" : "False!");

MessageBox.Show(string.Format("{0}!", this.SomeBoolValue));