C#中的int.TryParse怎么用?
1个回答
展开全部
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.
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.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询