2017-07-30 6 views
0

C#では、何回も式に基づいて文字列を取得したいと思っています。ほとんどの場合、私はこの見解でこれを行います。1つの結果だけが必要な場合は、3値の合成糖がありますか?

私はブールisCompleteに基づいて「完了」印刷したいのであれば、例えば、私はこれを実行する必要があります。

<span class="badge">@(isComplete? "Complete" : "")</span> 

この構文を短くなり、言語のいずれかのオプションがありますので、私は空の文字列オプションを持つ必要はありませんか?

何か

よう
<span class="badge">@(isComplete => "Complete")</span> 

は、文字列やブール値を受け取り、ブール値がfalseの場合はnullまたは空返す関数のように、自分でこれを行うにはいくつかの方法がありますが、多分それはすでに存在しています言語で

public String GetTextOrEmpty(bool control, String text) 
{ 
    return control? text : ""; 
} 

をし、このようにそれを呼び出す:

+0

でカスタムブール型の私は本当の答えと誰かがこれに光を当てることができます前に、この質問には「広すぎる」であることのため閉鎖されると思いますが、 。 – Phiter

+0

私には分かりません。節約は最小限であるばかりでなく、読みやすさの点でも疑わしいようです。なぜ、割り当てがないのではなく、自然な割り当てとなるのでしょうか?もちろん他のデータ型については、他のデフォルト値が適用されます。そしてオブジェクトのために、何、ヌル? – TaW

答えて

1

あなたは、単にこのように関数を宣言することができます

<span class="badge">@(GetTextOrEmpty(isComplete, "Complete"))</span> 
+0

私は質問で言ったように、うん、私はそれのtought。しかし、機能はあまりにも明白です。これを行うためにオペレータを拡張する方法はありますか? – Phiter

+0

私はそうは思わない。しかし、他の誰かがアイデアを持っているかどうかを見てみましょう。 –

+0

お願いします。 C#は文法的な糖でいっぱいの美しい言葉ですが、このようなものがまだ存在しなければ、本当に感動します。 – Phiter

0

をまだが、ここではいくつかの選択肢です:

<span class="badge">@isComplete.Complete()</span> - 拡張方法

<span class="badge">@Complete(isComplete)</span> - 方法

<span class="badge">@(Complete)isComplete</span>からexplicit operator

<span class="badge">@isComplete</span>を持つカスタムタイプ - override ToString

関連する問題