Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用lambda根据if语句执行操作_C#_.net_Lambda - Fatal编程技术网

C# 使用lambda根据if语句执行操作

C# 使用lambda根据if语句执行操作,c#,.net,lambda,C#,.net,Lambda,如何使用lambda在一行中编写一个奇特的if语句 我想要这样的东西: this.SomeBoolValue == false ? (() => MessageBox.Show("False!")) : (() => MessageBox.Show("True!")); 谢谢一些不使用lambda的“单线”变体,它们都实现了相同的功能: if(this.SomeBoolValue == false) MessageBox.Show("False!"); else MessageBo

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

我想要这样的东西:

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

谢谢

一些不使用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));

这真的很愚蠢,你不应该那样做但出于教学目的,这里的代码可以满足您的需要

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

  • 您需要实际调用lambda,这就是为什么末尾有
    ()


  • 明显的问题时间:为什么?出于好奇,再加上有一个花哨的代码。接下来的问题:为什么lambda,这里根本没有必要?可以不用lambda,更多关于一行if语句的古玩。其中“花哨”意味着“难以理解和维护”。不知道为什么有人投反对票,这是正确的。不管怎样,我给你一个+1