次のコードを ?: 演算子を使用するように変換するにはどうすればよいですか?
tbtotalamount.Text = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
if (tbtotalamount.Text.Length == 0)
{
tbtotalamount.Text = "0";
}
次のコードを ?: 演算子を使用するように変換するにはどうすればよいですか?
tbtotalamount.Text = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
if (tbtotalamount.Text.Length == 0)
{
tbtotalamount.Text = "0";
}
? :
引用されたコードは、条件演算子と呼ばれる演算子を使用してもメリットがありません(「三項演算子」と呼ばれることもありますが、技術的には三項演算子にすぎません。たとえば、3 つのオペランドを持つ演算子です)。
通常、条件演算子は、変数があり、条件に基づいて 2 つの値のいずれかを変数に割り当てたい場合に便利です。したがって、次の形式でコーディングします。
if (someCondition) {
a = "one value";
}
else {
a = "a different value";
}
書き換え可能
a = someCondition ? "one value" : "a different value";
ただし、あなたの場合tbtotalamount.Text
はstring.Format
、if
.
はい。方法は次のとおりです。
string test = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
tbttotalamount.Text = test.length == 0 ? "0" : test;
非常に多くの反対票を見て申し訳ありません。私は ? に慣れていません。(三項)演算子も非常に長い間。とても使いやすいと思います。
その左側はテスト式で、評価後のブール値である必要があります。右側は演算子が返すものです: true の場合、. の左側の値を返します:
。false の場合、右側の値。式全体が何かを返すことに注意してください。コンパイラは、それに対して何らかの処理を行う必要があります。三項演算を使用して、戻り値の型が である関数を呼び出す if-else ステートメントを置き換えることはできませんvoid
。
私が言いたいのは、(私のように) これまでに一度も使用したことがない多くの人々は、これが純粋なif-else 置換であると考えているように見えるということです。