黑马程序员技术交流社区
标题:
方法复习
[打印本页]
作者:
许大虾
时间:
2013-6-4 12:38
标题:
方法复习
本帖最后由 许大虾 于 2013-6-4 13:14 编辑
<P>string s = "123abc";
int re;
if (IntTryParse(s, out re))
{
Console.WriteLine("Successful conversion" + re);
}
else
{
Console.WriteLine("Conversion failed");
}
Console.ReadKey();</P>
<P> }</P>
<P>static bool IntTryParse(string s, out int result)
{
result = 0;
try
{
result = Convert.ToInt32(s);
return true;
}
catch
{
return false;
}
}</P>
复制代码
嘿嘿 速来个解释下这段代码 int re 和方法中的 out int result是什么关系
作者:
李晶晶
时间:
2013-6-4 14:45
本帖最后由 李晶晶 于 2013-6-4 14:46 编辑
int re 是你在main函数中定义的一个局部变量, out int result是你在 IntTryParse方法中定义的一个输出参数。
当你调用 IntTryParse方法时,int re 的“re”变量会被传递给out int result的“result”变量。由于 IntTryParse方法中第二个参数的传递方式是输出参数传递方式,所以你在IntTryParse方法中的“result = Convert.ToInt32(s)”转换结果会被“ if (IntTryParse(s, out re))”输出并传递给int re的变量re。
作者:
李云飞
时间:
2013-6-4 14:58
static void Main(string[] args)
{
//定义一个string类型的变量并用字符串123abc来给其初始化
string s = "123abc";
int re;
//试着将字符串转换为整形,当转换成功时就将次字符串对应的整形数赋给变量已经定义了的整形变量re,并提示用户转换成功且输出转化后的值
if (IntTryParse(s, out re))
{
Console.WriteLine("Successful conversion" + re);
}
//当字符串无法完成转换时就提示用户转化失败
else
{
Console.WriteLine("Conversion failed");
}
Console.ReadKey();
}
/// <summary>
/// 字符串转换成整形的方法
/// </summary>
/// <param name="s">要准换的字符串</param>
/// <param name="result">要转换字符串转换后得到的整形变量的值</param>
/// <returns>转换是否成功</returns>
static bool IntTryParse(string s, out int result)
{
result = 0;
try//不知道楼主用try了却为什么没有对异常进行处理的
{
//调用Convert.ToInt32方法完成对传入的字符串进行转换
result = Convert.ToInt32(s);
return true;
}
catch
{
return false;
}
}
}
}
楼主在IntTryParse方法中用out关键字来实现一个函数同时向外返回多个值,int re 是定义的一个用来接收转换成功后的值。在内存中 re和result变量指向了同一个内存地址,就好比c语言中用指针来只想内存中的同一个内存地址。还可以用ref关键字来实现一个函数同时返回多个值。out 和 ref关键字的主要区别就在于 out只能向外返回值是单向而ref即可以传入值也可以向外返回值是双向的。
以上是我的理解,若有不妥之处请指正,大家相互学习,一起进步。向着黑马的大门一步步迈进。谢谢!
作者:
一直在努力
时间:
2013-6-4 17:27
我看到 re 是做为一个输出参数。传给方法IntTryParse 因为返回值 用于。看字串能不能转化成功
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2