你试过什么?我们可以看看你的代码吗?
现在,我尝试了以下方法:
int i;
i = Convert.ToInt32(""); // throws, doesn't give zero
i = int.Parse(""); // throws, doesn't give zero
bool couldParse = int.TryParse("", out i); // makes i=0 but signals that the parse failed
所以我无法重现。但是,如果我使用null
而不是""
,则Convert.ToInt32
确实会转换为零 ( 0
)。但是,Parse
仍然TryParse
失败null
。
更新:
现在我看到了你的代码。考虑将otherId
from的类型更改int
为int?
问号使其成为可为空的类型。然后:
if (txtOtherId.Text == "")
{
otherId = null; // that's null of type int?
}
else
{
otherId = Convert.ToInt32(txtOtherId.Text); // will throw if Text is (empty again or) invalid
}
如果您想确保不会发生异常,请执行以下操作:
int tmp; // temporary variable
if (int.TryParse(txtOtherId.Text, out tmp))
otherId = tmp;
else
otherId = null; // that's null of type int?; happens for all invalid input