我想检查一个文本框,如果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。 –