我想检查一个文本框,如果为null则指定为零,然后进行一些计算。我知道有一个空的合并(??)操作符可以帮助我,但是我不确定当textbox为空时我可以分配int。
我试着写这样的东西,但似乎是一个错误。
sdowntime = Convert.ToInt32(txtSDown.Text) ?? 0;
我明白了
错误98运营商' ??'不能应用于' int'类型的操作数和' int'
我做错了什么或实际上我应该使用另一种方法?请指导。 非常感谢你!
答案 0 :(得分:1)
你也可以使用TryParse
方法,如下所示:
int sdowntime;
int.TryParse(txtSDown.Text, out sdowntime);
如果TextBox
为空或包含非数字值,则out
参数将被赋值为0.否则,将分配适当解析的值。但请注意,您应始终进行客户端验证,以确保用户不会在数字字段中输入非数字值。
答案 1 :(得分:0)
您收到错误,因为int
是值类型。由于值类型不是null
- 能够,因此对它们使用null-coalescing运算符是没有意义的。
<击>
你真正需要做的是检查文本的null
-
string textToParse = txtDown.Text ?? "0";
击> <击> 撞击>
修改:所以我犯了一个错误,并指出TextBox.Text
永远不会是null
。
<强>附加强>:
即使您检查为空,如果您的文字不是Convert.ToInt32
,而是空(null
或""
),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.
}