int resultid;
Int32.TryParse(collection["id"],out resultid);
这些值来自collection["id"]
,但是对于某些大于8位数的值,这些值显示为0。因此我尝试了同样的问题,将resultid
作为0
。请提出建议吗?
答案 0 :(得分:4)
TryParse返回true或false以指示成功。 out参数的值用于解析的值,或者在失败时使用0。所以:
int value;
if (Int32.TryParse(someText, out value))
{
// Parse successful. value can be any integer
}
else
{
// Parse failed. value will be 0.
}
因此,如果传入“0”,它将执行第一个块,而如果传入“坏数字”,它将执行第二个块。
答案 1 :(得分:1)
你没有提到要使用collection["id"]
而是......
来自Int32.TryParse Method (String, Int32)
此方法返回时,包含32位有符号整数值 相当于s中包含的数字,如果转换成功, 如果转换失败,则或为零。
由于collection["id"]
大于Int32.MaxValue
,您的会话似乎失败,但由于您没有告诉我们更多信息,因此几乎无法给出确切答案..
Int64
也有一个TryParse
方法,我认为它可以保持你的价值;
int resultid;
bool success = Int64.TryParse(collection["id"], out resultid);
答案 2 :(得分:-1)
string s1 = "1234";
string s2 = "1234.65";
string s3 = null;
string s4 = "123456789123456789123456789123456789123456789";
success = Int32.TryParse(s1, out result); //-- success => true; result => 1234
success = Int32.TryParse(s2, out result); //-- success => false; result => 0
success = Int32.TryParse(s3, out result); //-- success => false; result => 0
success = Int32.TryParse(s4, out result); //-- success => false; result => 0