对于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,那样的话代码可读性就太差了让人看着会有有种生不如死的感觉。
如有不同见解欢迎拍砖~~
|