gpt4 book ai didi

c# - 为什么是 i++ "unreachable code"?

转载 作者:太空狗 更新时间:2023-10-30 00:31:48 24 4
gpt4 key购买 nike

编辑

我把它留在这里,尽管它让我看起来很愚蠢,因为它是一个微妙的错误,如果你在深夜工作并且不注意的话,它会咬你。感谢 Visual Studio 拥有如此智能的解析器。

基本上我错过了我有嵌套循环,所以 continue 语句在这里基本上没有值(value),因为它继续 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 单元格,则继续下一次迭代。否则,只需返回在本次迭代中找到的工作表。”

没有 CONTINUE 语句的更正代码

/// <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;
}

最佳答案

在这里,您的 for 循环完全没用。在第一次迭代之后,无论如何它都会返回。当然,您的 foreach 循环有一个 continue 语句,但这仅适用于 foreach 循环。这就是您的代码无法访问的原因。

因此,只会分析第一张纸。如果这是您想要的,您可以简单地删除 for 循环并将工作表定位在索引 0 处,或者您需要重新安排您的循环。

关于c# - 为什么是 i++ "unreachable code"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22573157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com