A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 许大虾 中级黑马   /  2013-6-4 12:38  /  1186 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 许大虾 于 2013-6-4 13:14 编辑

  1. <P>string s = "123abc";
  2.             int re;
  3.             if (IntTryParse(s, out re))
  4.             {
  5.                 Console.WriteLine("Successful conversion" + re);
  6.             }
  7.             else
  8.             {
  9.                 Console.WriteLine("Conversion failed");
  10.             }
  11.             Console.ReadKey();</P>
  12. <P>        }</P>
  13. <P>static bool IntTryParse(string s, out int result)
  14. {
  15. result = 0;
  16. try
  17. {
  18. result = Convert.ToInt32(s);
  19. return true;
  20. }
  21. catch
  22. {
  23. return false;
  24. }
  25. }</P>
复制代码
嘿嘿 速来个解释下这段代码    int re 和方法中的 out int result是什么关系

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

3 个回复

正序浏览
我看到 re 是做为一个输出参数。传给方法IntTryParse 因为返回值 用于。看字串能不能转化成功
回复 使用道具 举报
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即可以传入值也可以向外返回值是双向的。
以上是我的理解,若有不妥之处请指正,大家相互学习,一起进步。向着黑马的大门一步步迈进。谢谢!

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 李晶晶 于 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。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马