You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多条件嵌套if判断转换为for循环?(C#)

数组匹配判断转for循环的错误修正

原代码的逻辑是:当localModulebytes从i+1到i+9的9个元素,和convertedByteArray从1到9的9个元素全部相等时,才给similarities加1。

你写的循环有两个明显错误:

  1. 逻辑错误:它会在每个位置匹配时都给similarities加1,最多能加9次,这自然会让数值远高于原代码的结果;
  2. 范围错误:循环条件j < 9只检查到j=8,漏掉了原代码里j=9的判断,导致匹配范围不完整。

正确的for循环写法应该是先验证所有位置是否都匹配,只有全部匹配时才执行一次加1操作,同时覆盖完整的9个位置:

bool allMatch = true;
for (int j = 1; j <= 9; j++)
{
    if (localModulebytes[i + j] != convertedByteArray[j])
    {
        allMatch = false;
        break; // 只要有一个不匹配,直接跳出循环,不用再检查剩下的
    }
}
if (allMatch)
{
    // Code
    similarities++;
}

原代码参考

if (localModulebytes[i + 1] == convertedByteArray[1]
    && localModulebytes[i + 2] == convertedByteArray[2]
    && localModulebytes[i + 3] == convertedByteArray[3]
    && localModulebytes[i + 4] == convertedByteArray[4]
    && localModulebytes[i + 5] == convertedByteArray[5]
    && localModulebytes[i + 6] == convertedByteArray[6]
    && localModulebytes[i + 7] == convertedByteArray[7]
    && localModulebytes[i + 8] == convertedByteArray[8]
    && localModulebytes[i + 9] == convertedByteArray[9]
    )
{
    // Code
    similarities++;
}

你尝试的错误代码

for (var j = 1; j < 9; j++)
{
    if (localModulebytes[i + j] == convertedByteArray[j])
    {
        similarities++;
    }
}

内容的提问来源于stack exchange,提问作者LennartGran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:41:00