2010-06-20 32 views
1

我有一個簡單的條件,並希望與?:關鍵字實現它,但編譯器不讓我。這是確切的樣品如何使用?字符串的關鍵字

// in asp page decleration 
<ajaxtoolkit:FilteredTextBoxExtender id="ftbeNumeric" runat="server" TargetControlID="textbox1" FilterType="Numbers" /> 
<asp:TextBox ID="textbox1" runat="server" /> 

// in code behind 
decimal x = textbox1.Text != string.IsNullOrEmpty ? Convert.ToDecimal(textbox1.Text) : 0; 

我也試試這個

// in code behind 
decimal x = Convert.ToDecimal(textbox1.Text) != 0 ? Convert.ToDecimal(textbox1.Text) : 0; 

這些採樣臉,錯誤的bith。

如何用?:關鍵字定義這個?並注意textbox .text`可能爲空。

+1

由於Oak表示IsNullOrEmpty不是一個屬性,它是一種靜態方法。 看來你想要將一個字符串轉換爲小數,如果它有一個值(非空或空),如果值不能轉換爲小數,可能導致InvalidCastException。因此,我建議使用更清晰和更安全的方法(比如Anthony Pegram說的)。這種方法的優點是它顯示了什麼意圖完成,例如默認值已被故意選擇或引發了自定義異常 – Beatles1692 2010-06-20 06:09:07

回答

6

考慮改變爲類似

decimal x; 
if (!decimal.TryParse(textbox1.Text, out x)) 
{ 
    // throw an exception? 
    // set it to some default value? 
} 

當然,如果你想扔在一個無效/缺少輸入一個例外,你可以簡單地使用.Parse方法來代替,它會拋出一個您。但使用.TryParse將允許您自定義異常的消息,或者簡單地以另一種方式處理它,例如重新提示用戶。

0

我這個說法

string.IsNullOrEmpty(textbox1.Text) ? 0 : Convert.ToDecimal(textbox1.Text); 
+1

該聲明並不真正解決它。在這裏,你要說的是,如果文本框中沒有任何內容,請將其轉換爲小數。否則,使它爲0.看到一個問題? – 2010-06-20 05:36:55

+0

@Anthony - 其實我寫的是這樣,我有一個錯誤 - 謝謝你的考慮。我糾正它爲新的commers。 – 2010-06-20 06:20:11

3

String.IsNullOrEmpty固定它是一種方法,而不是一個領域。所以正確的用法是String.IsNullOrEmpty(textbox1.Text)