2016-03-31 70 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

@理查德:不客氣。一些有助於未來的事情是根據你所要做的事情來說明你的問題。很多初學者很早就走錯了路,然後問了很多關於如何留在錯誤路徑上的問題。更好地走在正確的道路上。 –