2016-03-31 32 views
-1

我想要在ForEach扩展中使用三元运算符时出现问题。我的代码如下:如何在表达式为真时使用三元运算符?

List<string> lstText = new List<string>(); 
lstComboBox.ForEach(x => !String.IsNullOrWhiteSpace(x.Text) ? lstText.Add(x.Text)); 

我需要使用三元运算符来验证有一个文本组合框,然后将其保存到列表中,如果你没有找到的东西,什么也不做。

+1

为什么你需要*使用三元运算符,为什么不使用简单的'if()'语句呢? – CodingGorilla

+2

“我需要使用三元运算符” - 不,你不需要。我相信你以前见过'if'关键字。 – hvd

回答

11

我需要使用三元运算符来验证是否有文本组合框,然后将它保存到列表中,如果您没有找到某个东西,什么都不做。

不这样做。这是可怕的风格,很难推理,并违背惯例。

这样做:

var result = comboBox 
      .Select(comboBoxItem => comboBoxItem.Text) 
      .Where(text => !String.IsNullOrWhiteSpace(text)) 
      .ToList(); 

你有三个逻辑运算:获取文本出来的组合框,过滤掉空白文本,创建一个列表。这个程序非常清楚地完成了这三件事情。除非需要,否则不要混淆循环和三元组,并将其添加到列表中;写程序的水平表示你正在尝试做什么而不是你是怎么做的

+0

绝对!谢谢埃里克。 –

+0

那优秀的回应。谢谢你教我,我只是一个徒弟。 – Richard

+0

@理查德:不客气。一些有助于未来的事情是根据你所要做的事情来说明你的问题。很多初学者很早就走错了路,然后问了很多关于如何留在错误路径上的问题。更好地走在正确的道路上。 –