2016-03-31 7 views
-1

3進演算子ForEach内線に使用する場合に問題があります。 、私はあなたが何かを見つけていない場合は、テキストコンボボックスがあることを確認し、リストに保存する三項演算子を使用する必要が表現が唯一の場合にTernary演算子を使用するには?

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

何もしません:私のコードは次のとおりです。

+1

なぜ3値演算子を使う必要があるのですか?単純な 'if()'文を使わないのはなぜですか? – CodingGorilla

+2

"三項演算子を使用する必要があります" - いいえ、そうではありません。前に 'if'キーワードを見たことがあります。 – hvd

答えて

11

テキストコンボボックスがあることを検証し、何かを見つけられない場合は何もしないでリストに保存するために、3項演算子を使用する必要があります。

しないでください。それはひどいスタイルで、理由を説明するのが難しく、一般的な習慣に反する。

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

あなたは3つの論理演算を持っている:

これを行うコンボボックスのうち、テキストを取得し、空白のテキストを除外し、リストを作成します。このプログラムは、これらの3つのことを非常に明確にしています。あなたが必要としない限り、ループや三角括弧で囲み、リストに追加しないでください。 を表現しているレベルでプログラムを書いてください。ではなく、 あなたはそれをやっています

+0

絶対に!ありがとう、エリック。 –

+0

その優れた応答。私に教えてくれてありがとう、私は単なる徒弟です。 – Richard

+0

@リチャード:どうぞよろしくお願いいたします。将来役立つものは、あなたがしようとしていることに関してあなたの質問を表現することです。多くの初心者は間違った道に早く立ち寄り、間違った道にとどまる方法について多くの質問をします。最初の場所で適切な道を歩むほうがいい。 –

関連する問題