C#中的int.TryParse怎么用?

2024-12-14 13:59:52
推荐回答(5个)
回答1:

int.Parse()是一种类容转换;表示将数字内容的字符串转为int类型。
如果字符串为空,则抛出ArgumentNullException异常;
如果字符串内容不是数字,则抛出FormatException异常;
如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常;

int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0

回答2:

out是用于修饰方法调用的参数的。你可以想成方法会给这个参数设置值。因此你肯定要定义一个变量来接收这个值。
int i = 0;//定义接受值的变量
int.TryParse("123",out i);

str也不一定要是整数的字符串。这个方法在遇到不能转换的值时会返回false,不会抛出异常。

楼主遇到这种问题,你最好用reflector自己看看:
以下是reflector反编译的代码:
[SecuritySafeCritical]
internal static unsafe bool TryParseInt32(string s, NumberStyles style, NumberFormatInfo info, out int result)
{
byte* stackBuffer = stackalloc byte[0x72];
NumberBuffer number = new NumberBuffer(stackBuffer);
result = 0;
if (!TryStringToNumber(s, style, ref number, info, false))
{
return false;
}
if ((style & NumberStyles.AllowHexSpecifier) != NumberStyles.None)
{
if (!HexNumberToInt32(ref number, ref result))
{
return false;
}
}
else if (!NumberToInt32(ref number, ref result))
{
return false;
}
return true;
}
可以看到result在处理时先被设置成0了,所以转换不成功,传进去的out参数就=0.

回答3:

int i=0;
int.TryParse("abc",out i)
第二个参数是输出参数,把结果放入i
返回的是bool类型,即成功不成功
这个和在Parse外面套try catch然后返回bool值是一样的
就是把你的代码简化了一点,帮你出错处理了

回答4:

int i=0;
if(int.TryParse("abc",out i)){转换成功,i就是要的值}

回答5:

//拿ASP.NET获取参数来说明
string tempStr = request.QueryString["id"].ToString();
int id = 0;
if(int.TryParse(tempStr , out id ))//尝试转换tempStr 如果成功就把转换的值赋值给id
{
//如果进入到此块,说明转换成功
}