我想檢查一個文本框,如果null然後分配零,然後繼續進行一些計算。我知道有一個空合併(?)運算符可以幫助我,但我不確定是否可以在textbox爲空時分配int。空字符串爲空的合併
我試圖寫這樣的東西,但似乎是一個錯誤。
sdowntime = Convert.ToInt32(txtSDown.Text) ?? 0;
我得到這個
錯誤98操作 '?'不能應用於'int'和'int'類型的操作數
任何我做錯了或實際上我應該使用另一種方法?請指導。 非常感謝!
我想檢查一個文本框,如果null然後分配零,然後繼續進行一些計算。我知道有一個空合併(?)運算符可以幫助我,但我不確定是否可以在textbox爲空時分配int。空字符串爲空的合併
我試圖寫這樣的東西,但似乎是一個錯誤。
sdowntime = Convert.ToInt32(txtSDown.Text) ?? 0;
我得到這個
錯誤98操作 '?'不能應用於'int'和'int'類型的操作數
任何我做錯了或實際上我應該使用另一種方法?請指導。 非常感謝!
您也可以使用TryParse
方法,像這樣:
int sdowntime;
int.TryParse(txtSDown.Text, out sdowntime);
如果TextBox
爲空或包含一個非數字值,則out
參數將被分配值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.
}
「文本框」的「文本」不能爲空。如果'TextBox'爲空,則它將是'String.Empty'。 – jmcilhinney
@jmcilhinney:謝謝。我學到了東西。 – Krumia
'Convert.ToInt32'不可能返回null。 –