在C#代码中避免goto语句的最佳方法是什么? 我想摆脱goto语句重新启动for循环
的执行//some processing statements
//..
//..
start:
var rowCollection = GetData();
int RowCount = rowCollection.Count;
for(int iRow = 0; iRow < RowCount; iRow++)
{
if(rowCollection[iRow]["Col"] > 0)
{
goto start;
}
else
{
//some processing statement
}
}
//some more processing statements
//..
//..
其中,
答案 0 :(得分:5)
我认为您必须重构代码以使其更清晰,例如:
bool result;
do
{
var rowCollection = GetData();
result = ProcessData(rowCollection);
} while (!result);
然后有这个方法:
bool ProcessData(RowCollection rowCollection)
{
foreach (var item in rowCollection)
{
if (item["Col"] > 0)
{
return false;
}
else
{
// Do your stuff.
}
}
return true;
}
这样您的代码就更具可读性和可维护性。
答案 1 :(得分:0)
var rowCollection = GetData();
for(int iRow = 0; iRow < RowCount; iRow++)
{
if(iRow["Col"] > 0)
{
rowCollection = GetData();
RowCount=rowCollection.length();
irow = 0;
}
else
{
//some processing statement
}
}
答案 2 :(得分:-1)
不太确定您的用例是什么,但您可以这样做。
var rowCollection = GetData();
for(int iRow = 0; iRow < RowCount; iRow++)
{
if(iRow["Col"] > 0)
{
rowCollection = GetData();
irow = 0;
}
else
{
//some processing statement
}
}