4

我需要 C# 等价于 Java 的 continue 吗?

我有

for (String b : bar) {
    <label>
    try {
    }
    catch (EndpointNotFoundException ex) {
    continue <label>
    }
  }

我如何在 C# 中模拟这个。当我遇到异常时,我需要重复代码不继续。

4

4 回答 4

5

如果只需要继续下一次循环迭代,请使用continue.

c# 也有标签(你可以用 跳转到goto),但请不要使用它们。

于 2010-03-19T20:38:48.467 回答
5

采用goto <label>;

于 2010-03-19T20:39:59.557 回答
5

为什么不简单地添加一个控制变量?

foreach (String b in bar) {
  bool retry;
  do {
    retry = false;
    try {
      // ...
    }
    catch (EndpointNotFoundException ex) {
      retry = true;
    }
  } while (retry);
}

或者

var strings = bar.GetEnumerator<string>();
var retry = false;
while (retry || strings.Next()) {
  var b = strings.Current;
  retry = false;
  try {
    // ...
  }
  catch (EndpointNotFoundException ex) {
    retry = true;
  }
}
于 2010-03-19T20:51:36.593 回答
2

我不认为您尝试做的事情是明智的——您是否有任何理由期望您不会遇到在特定迭代中总是出现异常的情况?

无论如何,要做你想做的事情goto,看看这个:

foreach (String b in bar) { 
    while(!DidSomethingWithThisString(b))
        ;
  } 

bool DidSomethingWithThisString(string b)
{
    try { 
    } 
    catch (EndpointNotFoundException ex) { 
        return false;
    } 
    return true;
}
于 2010-03-19T20:58:27.237 回答