C#中的int.TryParse怎么用?
我感觉这个东西好像就是把一个对象转换成int类型的。但是,这个方法必须有两个参数,必须写成类似这样的int.TryParse(str,out*),其中的*应该用已经定义过...
我感觉这个东西好像就是把一个对象转换成int类型的。但是,这个方法必须有两个参数,必须写成类似这样的int.TryParse(str , out * ),其中的*应该用已经定义过的int类型对象,str是要转换成int类型的对象。但是,我自己每次写的时候,都不知道这个out后面的东西到底要怎样写?写什么?有什么意思?
现在我自己也被搞的很晕了。郁闷。
各位的意思是:
string corpId = HttpContext.Current.Request.Params["comID"];
public static int comId;
private void GetParams()
{
if (!string.IsNullOrEmpty(corpId))
{
comId = 999999;
if (!int.TryParse(corpId, out comId))
{
Response.Write("<script type='text/javascript' language='javascript'>");
Response.Write("alert('页面不存在')");
Response.Write("</script>");
}
}
}
是不是把corpId转换成int类型的。如果转换不了的话,是不是comId就变成了999999.
如果转换成功的话,comid就接受corpid转换过来的值?
对吗? 展开
现在我自己也被搞的很晕了。郁闷。
各位的意思是:
string corpId = HttpContext.Current.Request.Params["comID"];
public static int comId;
private void GetParams()
{
if (!string.IsNullOrEmpty(corpId))
{
comId = 999999;
if (!int.TryParse(corpId, out comId))
{
Response.Write("<script type='text/javascript' language='javascript'>");
Response.Write("alert('页面不存在')");
Response.Write("</script>");
}
}
}
是不是把corpId转换成int类型的。如果转换不了的话,是不是comId就变成了999999.
如果转换成功的话,comid就接受corpid转换过来的值?
对吗? 展开
8个回答
2011-01-08
展开全部
int.Parse()是一种类容转换;表示将数字内容的字符串转为int类型。
如果字符串为空,则抛出ArgumentNullException异常;
如果字符串内容不是数字,则抛出FormatException异常;
如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常;
int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0
如果字符串为空,则抛出ArgumentNullException异常;
如果字符串内容不是数字,则抛出FormatException异常;
如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常;
int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0
参考资料: cjl
展开全部
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.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int i=0;
int.TryParse("abc",out i)
第二个参数是输出参数,把结果放入i
返回的是bool类型,即成功不成功
这个和在Parse外面套try catch然后返回bool值是一样的
就是把你的代码简化了一点,帮你出错处理了
int.TryParse("abc",out i)
第二个参数是输出参数,把结果放入i
返回的是bool类型,即成功不成功
这个和在Parse外面套try catch然后返回bool值是一样的
就是把你的代码简化了一点,帮你出错处理了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int i=0;
if(int.TryParse("abc",out i)){转换成功,i就是要的值}
if(int.TryParse("abc",out i)){转换成功,i就是要的值}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//拿ASP.NET获取参数来说明
string tempStr = request.QueryString["id"].ToString();
int id = 0;
if(int.TryParse(tempStr , out id ))//尝试转换tempStr 如果成功就把转换的值赋值给id
{
//如果进入到此块,说明转换成功
}
string tempStr = request.QueryString["id"].ToString();
int id = 0;
if(int.TryParse(tempStr , out id ))//尝试转换tempStr 如果成功就把转换的值赋值给id
{
//如果进入到此块,说明转换成功
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询