如果我编写for,do或while循环,是否可以使用return关键字来解决这个问题?
例如:
class BreakTest
{
public static void Main()
{
for (int i = 1; i <= 100; i++)
{
if (i == 5)
**return;**
Console.WriteLine(i);
}
}
}
我知道return可以用于退出if语句所以我很好奇,因为我从未尝试过(并且无法访问我的软件来编写代码来测试它)。
答案 0 :(得分:43)
return
将退出当前方法(示例中为Main)。使用break
退出循环。
答案 1 :(得分:5)
你当然可以做你所要求的。你是否应该有2个阵营。有些人说一个函数应该只有一个退出点。他们建议您应该使用一个标志变量来记录您需要退出(以及可能需要返回的任何数据),然后在您退出循环或到达if / else树的末尾后返回
就个人而言,我对函数的多个退出点没有任何问题,只要它们是对称的。 “对称”是什么意思?好吧,如果我要从循环内部返回,那么我也想在循环结束时返回(如果我从未达到循环中导致我提前返回的条件)。如果我在一个复杂的if / else层面并且我从其中一个案例中返回,那么我应该从所有案例中返回。
以下是我喜欢编写代码的一些简单示例:
public string Search(IEnumerable<string> values)
{
foreach(string value in values)
{
if(SomeArbitraryCondition())
return value;
}
return null;
}
public int PerformAction()
{
if (SomeArbitraryCondition())
{
if (SomeArbitraryCondition())
{
return 1;
}
else
{
return 2;
}
}
else
{
if (SomeArbitraryCondition())
{
return 3;
}
else
{
return 4;
}
}
}
这并不是一个我认真考虑的硬性规则,但它只是我喜欢写它的方式,因为它对我来说似乎最干净。在某些情况下,使用标志变量并在一个地方返回更有意义。
public string Search(IEnumerable<string> values)
{
string found = null;
foreach(string value in values)
{
if(SomeArbitraryCondition())
found = value;
}
return found;
}
public int PerformAction()
{
int state;
if (SomeArbitraryCondition())
{
if (SomeArbitraryCondition())
{
state = 1;
}
else
{
state = 2;
}
}
else
{
if (SomeArbitraryCondition())
{
state = 3;
}
else
{
state = 4;
}
}
return state;
}
答案 2 :(得分:3)
您可以执行此操作。调用return;
将退出Main()。通常你会使用break;
来打破for循环。
话虽如此,在单个功能中拥有多个返回位置通常被认为是不好的做法。许多开发人员更喜欢使用单个return语句(如果该方法未使用void
声明)。从可理解性的角度来看,这可以使代码更容易理解,从而更易于维护和测试。
答案 3 :(得分:1)
牢记这些:
答案 4 :(得分:0)
答案方式过期但return;
将退出整个方法(因此也不在你的循环中),如果返回类型为void。如果不是,除非你返回方法的类型,否则它将无法编译。