2

短い1行の条件ステートメントを作成する方法を見つけようとしています。

この日付が null でない場合は、フィルタを現在のフィルタ リストに追加します。

fromDt ?? filters.Add(FilterType.DateFrom, fromDt);

これを行う方法はありますか?私は私ができることを知っています..

(fromDt != null) ? "something" : "something_else"、しかし、「else」は必要ありません??。null チェックに演算子を使用したいだけです。

4

3 に答える 3

7

これの何が問題なのですか?

if (fromDt != null) filters.Add(FilterType.DateFrom, fromDt);

何よりもまず、コードは読みやすいものでなければなりません。あなたの??コードが機能したとしても、一見しただけでは何をするのかわかりません。

于 2012-04-05T16:34:05.187 に答える
2

あなたがしようとしているコードは、あなたのコードを非常に読みにくくしています。BrokenGlassが言ったように、生の文字数と明快さを交換しています。

これは、C# がサポートする唯一の "1 行" ソリューションです。

if (fromDt != null) filters.Add(FilterType.DateFrom, fromDt);

しかし、これを少なくとも2 行に拡張することをお勧めします(私の好みは中かっこ付きの 4 行です)。

于 2012-04-05T16:36:12.237 に答える
0

ソリューションの目的はさておき、ワンライナーに従うと、を使用しているときに希望する最終結果が得られる場合があります??。ただし、自宅でこれを試さないでください。

filters.Add(FilterType.DateFrom, fromDt ?? DateTime.MinValue)

アイデアは、DateFromを可能な最小値に設定し、基本的にオープンフィルターを追加することです。

于 2012-04-05T16:39:30.180 に答える