2012-05-01 161 views
-5

如何將以下代碼轉換爲使用?:運算符。是否可能?如何使用?:運算符

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

的引用代碼將無法使用該? :運營商,這就是所謂的conditional operator(有時被稱爲「三元運算符」雖然技術上受益,這只是一個三元運算  —例如,有三個運算操作)。

通常情況下,當你有一個變量並且想根據一個條件給它分配兩個值中的一個時,條件運算符是很方便的。因此,在這種形式的代碼:

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

可以改寫

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

在你的情況,但是,你不知道tbtotalamount.Text是空白的,直到後你做了string.Format,所以你」最好還是留下if

+0

謝謝TJ克勞德。 – kashif

+2

@ kashif:不客氣,很高興幫助。 (順便說一下,我沒有看到這個問題有什麼大驚小怪的問題,我投票重新開放,fwiw。) –

+0

與你上面提到的例子我知道它是無用的嗎?運營商,如果更好的話,留下來......更進一步,我得到了主要觀點,即如何和何時?運算符被使用。這就是它對我的幫助。 – kashif

4

是的。具體方法如下:

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

對不起看到這麼多downvotes,我不熟悉? (三元)運營商很長一段時間。我認爲這非常方便。

它的左邊是你的測試表達式,在評估之後它應該是一個布爾值。右側是操作員返回的內容:如果爲true,則會將值返回到:的左側。如果爲false,則值爲右側。請注意,整個表達式會返回一些內容,編譯器需要您對它做些什麼。您不能使用三元操作來替換調用返回類型爲void的函數的if-else語句。

我的意思說的是,有很多人誰之前(像我)從來沒有使用過它似乎認爲,這是一個純粹的如果其他替代品,它是

+0

我很害怕這個quesion的downvoting。任何方式非常感謝 – kashif

+0

這不會在'int'文本中編譯爲'0','test'是一個'string'變量。 – Yuck

+0

'0'會自動轉換爲字符串嗎?沒有編程的C#一段時間,所以不知道 – zerkms