在C#中的foreach中使用带有lambda表达式的三元运算符
我正在尝试学习如何在C#中正确使用lambda表达式,我遇到了这个问题。 我有一个像这样定义的布尔数组:
public bool[] worldState = new bool[25];
现在,在给它赋值之后,我想循环它并在bool为真时简单地打印“T”,在它为假时简单地打印“F”。 我知道如何用循环来做,但我想用一个单行做,所以我想出了这个:
Array.ForEach(worldState, x => x? Console.WriteLine("T"): Console.WriteLine("F") );
但是,这不起作用。 为什么? 这样做的正确方法是什么?
尝试:
Array.ForEach(worldState, x => Console.WriteLine(x ? "T" : "F") );
三元函数需要返回一个值,因此在这种情况下,应将T或F返回到WriteLine
方法。
就个人而言,我认为foreach
或for
循环会更清洁,更有效。
foreach(bool bVal in Array) { Console.WriteLine(bVal ? "T" : "F"); }
要么
for(i = 0; i < Array.Length; i ++) { Console.WriteLine(Array[i] ? "T" : "F"); }
这是因为Console.WriteLine()
不返回任何内容。 从三元运算符文档中,重点是我的:
条件运算符(?:)返回两个值之一
和Console.WriteLine()
不返回值。
只需使用if语句:
Array.ForEach(worldState, x => { if(x) Console.WriteLine("T"); else Console.WriteLine("F"); } );
另一种可能性是使用三元运算符返回您想要的字符串:
Array.ForEach(worldState, x => Console.WriteLine( x ? "T" : "F" ) );
ForEach
if-else的正确语法是:
Array.ForEach(worldState, x => { if(x) { Console.WriteLine("T"); } else { Console.WriteLine("F");}} );
三元运算符? :
? :
需要将兼容值作为参数返回的表达式。 Console.WriteLine
是一个void
函数,不返回值。
虽然我会注意到标准的foreach
循环更容易阅读和调试。 我不建议使用.ForEach()
进行此类操作。 事实上,我不推荐它用于任何操作,因为它不会在标准循环上添加任何function。
上述就是C#学习教程:在C#中的foreach中使用带有lambda表达式的三元运算符分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/997332.html