2012-05-01 8 views
-5

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

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

http://msdn.microsoft.com/en-us/library/ty67wk28.aspx – zerkms

答えて

10

引用されたコード技術的に、それは  —例えば、3つのオペランドを持つオペレータだけ三項演算子ですが、conditional operator(とも呼ばれる「三項演算子」と呼ばれている? :演算子を使用してから利益を得ないだろう)。

通常、条件付き演算子は、変数を持ち、条件に基づいて2つの値の1つを割り当てる場合に便利です。だから、このフォームのコード:

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

は、あなたの場合は

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

を書き換えることができます、しかし、あなたはstring.Formatをやった後までtbtotalamount.Textが空白であることを知らないので、あなた」 ifでそれを残す方が良いです。

+0

ありがとうTJクラウダー。 – kashif

+2

@kashif:嬉しいことに、助けてくれて嬉しいです。 (私はすべての大騒ぎが質問であったのを見ていません。私は再開することに投票しました) –

+0

あなたの上記の例で私はそれは役に立たないと思ったのですか?演算子とそれを残している方が良いです...さらに私は、いつ、どのように主要なポイントを持っていますか?演算子が使用されます。それが私を助けた方法です。 – kashif

4

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

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

私はよく分からないのですか? (3値)演算子も非常に長い時間です。私はそれがとても便利だと思います。

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

は、(私のような)前にそれを使ったことがない多くの人々は、これはそれがないである場合、他の代替、純粋で考えているようだということです。

+0

私はこのquesionのdownvotingを恐れていました。任意の方法はありがたいです – kashif

+0

これは 'int'リテラルで' 0'としてコンパイルされず、 'test'は' string'変数です。 – Yuck

+0

'0'は自動的に文字列に変換されますか?しばらくの間、C#でプログラムしなかったので、わからない – zerkms

関連する問題