【发布时间】:2014-04-29 16:05:09
【问题描述】:
编辑
我把它留在这里,即使它让我看起来很愚蠢,因为如果你在深夜工作并且不注意,它可能会咬你。感谢 Visual Studio 拥有如此智能的解析器。
基本上我错过了我有嵌套循环,所以continue 语句在这里基本上毫无价值,因为它继续foreach 循环,而不是for 循环。
原始问题
我正在对工作簿进行搜索,寻找与所有字符串搜索条件匹配的工作表。在 Visual Studio 编辑器中,i++ 下划线为“无法访问的代码”。
/// <summary>
/// Finds the first sheet that has cells that match all the criteria.
/// </summary>
/// <param name="wb"></param>
/// <param name="searches"></param>
/// <returns></returns>
public static ISheet FindSheet( this IWorkbook wb, params string[] searches )
{
if( null == wb || null == searches )
return null;
for( int i = 0; i < wb.NumberOfSheets; i++ )
{
var sheet = wb.GetSheetAt( i );
foreach( var search in searches )
{
var cell = sheet.FindCell( search );
if( null == cell )
continue;
}
return sheet;
}
return null;
}
我认为continue 语句在这里有一个明确的含义:“如果任何搜索条件返回null 单元格,则继续下一次迭代。否则,只需返回在此迭代中找到的工作表。”
没有继续声明的更正代码
/// <summary>
/// Finds the first sheet that has cells that match all the criteria.
/// </summary>
/// <param name="wb"></param>
/// <param name="searches"></param>
/// <returns></returns>
public static ISheet FindSheet( this IWorkbook wb, params string[] searches )
{
if( null == wb || null == searches )
return null;
for( int i = 0; i < wb.NumberOfSheets; i++ )
{
var sheet = wb.GetSheetAt( i );
if( searches.All( s => null != sheet.FindCell( s ) ) )
return sheet;
}
return null;
}
【问题讨论】:
-
这对于 CodeReview 来说是题外话,但是,continue 继续
foreach循环,而不是for循环......只是说,现在投票结束 -
return sheet;语句始终阻止它到达for循环的末尾。 -
为什么是尤达条件?
-
嘿布鲁斯....欢迎来到 CodeReview。当您在循环中添加标签并在 continue 中使用它时...为什么不将代码带回进行审查?似乎我们可以提出一些建议.... ;-)
标签: c# loops visual-studio