Null将字符串合并为Int

时间:2014-07-17 03:15:21

标签: c# coalesce

我想检查一个文本框,如果为null则指定为零,然后进行一些计算。我知道有一个空的合并(??)操作符可以帮助我,但是我不确定当textbox为空时我可以分配int。

我试着写这样的东西,但似乎是一个错误。

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

我明白了

  

错误98运营商' ??'不能应用于' int'类型的操作数和' int'

我做错了什么或实际上我应该使用另一种方法?请指导。 非常感谢你!

2 个答案:

答案 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.
}