-5

次のコードを ?: 演算子を使用するように変換するにはどうすればよいですか?

tbtotalamount.Text = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
if (tbtotalamount.Text.Length == 0)
{
    tbtotalamount.Text = "0";
}
4

2 に答える 2

10

? :引用されたコードは、条件演算子と呼ばれる演算子を使用してもメリットがありません(「三項演算子」と呼ばれることもありますが、技術的には項演算子にすぎません。たとえば、3 つのオペランドを持つ演算子です)。

通常、条件演算子は、変数があり、条件に基づいて 2 つの値のいずれかを変数に割り当てたい場合に便利です。したがって、次の形式でコーディングします。

if (someCondition) {
    a = "one value";
}
else {
    a = "a different value";
}

書き換え可能

a = someCondition ? "one value" : "a different value";

ただし、あなたの場合tbtotalamount.Textstring.Formatif.

于 2012-05-01T11:54:37.793 に答える
4

はい。方法は次のとおりです。

string test = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", ""));
tbttotalamount.Text = test.length == 0 ? "0" : test;

非常に多くの反対票を見て申し訳ありません。私は ? に慣れていません。(三項)演算子も非常に長い間。とても使いやすいと思います。

その左側はテスト式で、評価後のブール値である必要があります。右側は演算子が返すものです: true の場合、. の左側の値を返します:。false の場合、右側の値。式全体が何かを返すことに注意してください。コンパイラは、それに対して何らかの処理を行う必要があります。三項演算を使用して、戻り値の型が である関数を呼び出す if-else ステートメントを置き換えることはできませんvoid

私が言いたいのは、(私のように) これまでに一度も使用したことがない多くの人々は、これが純粋なif-else 置換であると考えているように見えるということです

于 2012-05-01T11:54:29.693 に答える