山西念星科贸有限公司 2024-07-09 17:41 采纳率: 72%
浏览 16
已结题

C#循环套循环,想要只退出嵌套的循环

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
//实例化一个for循环语句,并声明一个整数型局部变量,并命名为:ii,用来存储循环次数,并赋值为:0,只要局部变量:ii,的值小于:局部变量:原始凭证图片,的数组内容有多少个的值,就一直循环,并且每循环一次就将局部变量:ii,的值自增一
for (int ii = 0; ii < originalVouchersImage.Count; ii++)
{//声明一个:字节集型数组,局部变量,并命名为:原始凭证图片字节,并赋值为:局部变量:原始凭证图片,中的:第:局部变量:ii,的值,位的值
    byte[] originalVouchersImageByte = originalVouchersImage[ii];
    //声明一个:图片型,局部变量,并命名为:图片,并赋值为:调用:这个类是关于图片操作的类,中的:将字节数组数组转换成图片,方法的返回值,其中方法的参数一是:局部变量:原始凭证图片字节,的值
    Image image = ImageOperation.ConvertAnArrayToAnImage(originalVouchersImageByte);
    //声明一个文本型局部变量,并命名为:保存路径,用来保存保存路径,并赋值为:生成本地保存路径方法返回值+@"\"+AccountingVoucher
    string filePath = FileOperation.GenerateLocalSavePath() + $@"AccountingVoucher\{accountingVoucherNumber}";
    //声明一个驱动器信息数组类,命名为:驱动器,赋值为:当前电脑的驱动器信息
    DriveInfo[] drives = DriveInfo.GetDrives();
    //遍历当前电脑的驱动器信息
    foreach (DriveInfo drive in drives)
    {//判断:当前电脑,是否:有路径为:局部变量:保存路径,的值的文件夹
        if (drive.Name == filePath)
        { //如果:当前电脑,有路径为:局部变量:保存路径,的值的文件夹,将:局部变量:保存路径,重新赋值为:局部变量:保存路径,的值---拼接上:\---拼接上:记账凭证原始图片第---拼接上:局部变量:ii,的值---拼接上:张---拼接上:.Tiff
            filePath = filePath + @"\" + $"记账凭证原始图片第{ii}张" + ".Tiff";
            //跳出循环------直接退出了for循环,想要只退出foreach循环
            break;
        }//如果:当前电脑,没有路径为:局部变量:保存路径,的值的文件夹
        else
        {//创建一个文件夹,路径是:局部变量:保存路径,的值
            Directory.CreateDirectory(filePath);
            //将:局部变量:保存路径,重新赋值为:局部变量:保存路径,的值---拼接上:\---拼接上:记账凭证原始图片第---拼接上:局部变量:ii,的值---拼接上:张---拼接上:.Tiff
            filePath = filePath + @"\" + $"记账凭证原始图片第{ii}张" + ".Tiff";
            //跳出循环------直接退出了for循环,想要只退出foreach循环
            break;
        }// 保存局部变量:图片,为.Tiff文件
        image.Save(filePath, System.Drawing.Imaging.ImageFormat.Tiff);
    }
}

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

break------直接退出了for循环,想要只退出foreach循环

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-09 17:41
    关注

    引自免费微信小程序:皆我百晓生

    在你的代码中,你正在使用 break 关键字跳出循环,而这会导致你退出最外层的 for 循环。如果你想只退出内部的 foreach 循环,你可以使用标签(Label)来实现这一点。标签允许你指定一个特定的循环并从该位置退出。这是一个修改后的代码示例:

    // 定义外层循环的标签
    for (int ii = 0; ii < originalVouchersImage.Count; ii++)
    {
        // ... 其他代码 ...
        
        // 定义内部循环的标签
        foreach (DriveInfo drive in drives)
        {
            label_foreach_loop:
            {
                // ... 你的代码逻辑 ...
                if (/* 条件满足时 */) // 当需要退出内部循环时,使用 break 关键字并跳转到标签位置
                {
                    break label_foreach_loop; // 只退出内部 foreach 循环
                }
            } // 结束内部循环的代码块
        } // 结束 foreach 循环的代码块继续执行外层循环的其他代码,如果 ii 未达到上限,将执行下一次外层循环迭代。如果不满足退出条件,外层循环将继续执行并移动到下一个索引值。结束外层循环的代码块 ...} }```在上面的代码中,我们创建了一个名为 `label_foreach_loop` 的标签并将其放在 `foreach` 循环之前。当我们在需要退出内部循环时,我们使用 `break label_foreach_loop` 来实现这一点。这将允许我们只退出当前的 `foreach` 循环而不退出整个外部 `for` 循环。你需要确保标签名称的唯一性,以避免与其他标签冲突。同时,请确保你的代码逻辑是正确的,以避免无限循环或错误的情况。
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月28日
  • 创建了问题 7月9日

悬赏问题

  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。