2014-07-17 66 views
1

我想檢查一個文本框,如果null然後分配零,然後繼續進行一些計算。我知道有一個空合併(?)運算符可以幫助我,但我不確定是否可以在textbox爲空時分配int。空字符串爲空的合併

我試圖寫這樣的東西,但似乎是一個錯誤。

sdowntime = Convert.ToInt32(txtSDown.Text) ?? 0; 

我得到這個

錯誤98操作 '?'不能應用於'int'和'int'類型的操作數

任何我做錯了或實際上我應該使用另一種方法?請指導。 非常感謝!

+1

'Convert.ToInt32'不可能返回null。 –

回答

1

您也可以使用TryParse方法,像這樣:

int sdowntime; 
int.TryParse(txtSDown.Text, out sdowntime); 

如果TextBox爲空或包含一個非數字值,則out參數將被分配值0。否則,適當解析值被分配。但請注意,您應始終進行客戶端驗證,以確保用戶在數字字段中不輸入非數字值。

0

由於int是一個值類型,所以出現錯誤。由於值類型不是null -able,因此對它們使用空合併運算符是沒有意義的。

你真正需要做的是檢查 null -ness文:

string textToParse = txtDown.Text ?? "0"; 

編輯:所以我犯了一個錯誤,它已經指出,TextBox.Text永遠不能是null

額外:如果你的文字是不是null

即使你檢查空,Convert.ToInt32可以失敗,但空(""String.Empty)。您可以使用int.TryParse

int sdowntime; 

if (!int.TryParse(txtDown.Text ?? "0", out sdowntime)) 
{ 
    // int.TryParse will assign 0 to sdowntime if it fails 
    // so watch out for that too. 
} 
+0

「文本框」的「文本」不能爲空。如果'TextBox'爲空,則它將是'String.Empty'。 – jmcilhinney

+0

@jmcilhinney:謝謝。我學到了東西。 – Krumia