黑马程序员技术交流社区

标题: 关于C#的goto语句用法 [打印本页]

作者: 康子龙    时间: 2012-7-20 22:54
标题: 关于C#的goto语句用法
对于goto语句大部分人都会嗤之以鼻,但我想这里面相当一部分人根本没有用过或者说是没有发现其合理使用的便利性。但对于goto语句使用起来我们很容易上瘾,因为它实在是太方便了,用起来超级爽!
关于goto的用法可以参考MSDN,里面说的很是详细。
下面说说我个人使用goto的地方,我觉着用的应该还算合理。
1,用于异常处理中。
首先有如下这段代码
        /// <summary>
        /// 获取班级人数
        /// </summary>
        /// <returns>班级人数</returns>
        static int getNumOfPeople()
        {
            //用于保存接收的输入
            string read = "";
            //用于保存转换类型后的人数
            int numOfPeople = 0;

            //接收用户输入的人数并转为int类型
            do
            {
                Console.WriteLine("请输入班级人数:");
                read = Console.ReadLine().Trim().ToString();
            } while ("".Equals(read));
            try
            {
                numOfPeople = int.Parse(read);
            }
            catch
            {
                Console.WriteLine("输入格式不正确!");

            }
            return numOfPeople;
        }
对于这段代码我只是用于接收用户输入的人数,也就是说我只需要整数就行了,不需要也不能够出现别的数据类型所以我加了异常处理。但如果我想在格式出现问题后不让程序退出,让程序退回去重新接收次用户输入怎么办?由于我的知识有限,我本能的想到了最简单的方式,让程序从do-while循环重新来过不就行了吗?然后我就想到了很直接的,goto。修改后代码如下:
        /// <summary>
        /// 获取班级人数
        /// </summary>
        /// <returns>班级人数</returns>
        static int getNumOfPeople()
        {
            //用于保存接收的输入
            string read = "";
            //用于保存转换类型后的人数
            int numOfPeople = 0;
       Re:
            //接收用户输入的人数并转为int类型
            do
            {
                Console.WriteLine("请输入班级人数:");
                read = Console.ReadLine().Trim().ToString();
            } while ("".Equals(read));
            try
            {
                numOfPeople = int.Parse(read);
            }
            catch
            {
                Console.WriteLine("输入格式不正确!");
                //goto跳转至Re标签
                goto Re;
            }
            return numOfPeople;
        }

当然这里除了goto还有别的方式,这里用goto只是我觉着比较简便而且也不能算是滥用。当然了程序里终究不可能大量运用goto,那样的话代码可读性就太差了让人看着会有有种生不如死的感觉。
如有不同见解欢迎拍砖~~

作者: 李朋朋    时间: 2012-7-21 09:53
如果你的程序很大,并且又是让别人看的话,那看的人就费脑筋了,因为程序毕竟不只是自己看的。
作者: 许庭洲    时间: 2012-7-24 15:41
是啊,程序里终究不可能大量运用goto;
1,程序可读性会降低;
2,goto是汇编思想的体现,在代码内部乱跳还是很不稳定的;
3,不利于程序的移植,可读性。
作者: 侯慧杰    时间: 2012-7-24 16:51
看了此帖子后。。。用了一下goto  真的好用啊啊 啊。。。不过不能多用。。。。
作者: 康子龙    时间: 2012-7-24 23:37
侯慧杰 发表于 2012-7-24 16:51
看了此帖子后。。。用了一下goto  真的好用啊啊 啊。。。不过不能多用。。。。 ...

介个用多了很容易上瘾。。。:lol
作者: 黑马李果    时间: 2012-7-26 13:51
我也觉得很方便,在catch语句中,我经常用goto.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2