.net 如何将这个if代码转换为for循环?

nc1teljy  于 2022-11-19  发布在  .NET
关注(0)|答案(3)|浏览(150)

我想知道我怎么可能把这个神圣的if和&&检查的巢,转换成一个简单的for循环?任何解决方案都是感激的,因为我完全迷失了,我的大脑已经放弃了。

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

我试了一下这个代码,它给出的相似性远远超过了我的Hive代码:

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

vh0rcniy1#

这是因为你在循环中增加了更多的相似度。

var sim = true;
for (var j = 1; j < 9; j++) {
    if (localModulebytes[i + j] != convertedByteArray[j]) {
        sim = false;
        break;
    }
}
if(sim) similarities++;
xyhw6mcr

xyhw6mcr2#

GreenChicken的答案是使用for循环来实现这一点,但也有LINQ:

if (Enumerable.Range(1,9).All(j => localModulebytes[i + j] == convertedByteArray[j])) {
    ++similarities;
}

这不一定更好,但我会提供另一种选择。

klr1opcd

klr1opcd3#

要将初始代码转换为循环检查,可以执行以下操作:

var similar = true;
for ( var j = 1; j < 10; j++ )
    if ( localModulebytes[i + j] != convertedByteArray[j] )
    {
        similar = false;
        break;
    }
if (similar) similarities++;

但是,考虑到您使用了变量名称similarities,我怀疑您想计算这些项目中有多少是相同的,而不是所有的9。您的后续评论表明我的假设是不正确的。

相关问题