gpt4 book ai didi

C# 嵌套 if-else 优化

转载 作者:行者123 更新时间:2023-11-30 22:25:28 26 4
gpt4 key购买 nike

我有一个类 obj,它具有三个属性:firstValuesecondValuethirdValue,所有范围从 0 到 255。

我有一个 List包含类 obj 的对象,必须根据 firstValuesecondValuethirdValue 的值将它们分成 32 个不同的区域>。我已经成功地使用了这样的嵌套 if-else 语句:

if (obj.firstValue < 15 )
{
if(obj.secondValue <200)
{
if(obj.thirdValue <125)
maincolor[0]++;
else
maincolor[1]++;
}
else
{
if (obj.thirdValue < 125)
maincolor[2]++;
else
maincolor[3]++;
}
}
else if (obj.firstValue < 41)
{
if (obj.secondValue < 200)
{
if (obj.thirdValue < 125)
maincolor[4]++;
else
maincolor[5]++;
}
else
{
if (obj.thirdValue < 125)
maincolor[6]++;
else
maincolor[7]++;
}
}
else if (obj.firstValue < 90)
{
if (obj.secondValue < 200)
{
if (obj.thirdValue < 125)
maincolor[8]++;
else
maincolor[9]++;
}
else
{
if (obj.thirdValue < 125)
maincolor[10]++;
else
maincolor[11]++;
}
}
else if (obj.firstValue < 128)
{
if (obj.secondValue < 200)
{
if (obj.thirdValue < 125)
maincolor[12]++;
else
maincolor[13]++;
}
else
{
if (obj.thirdValue < 125)
maincolor[14]++;
else
maincolor[15]++;
}
}
else if (obj.firstValue < 166)
{
if (obj.secondValue < 200)
{
if (obj.thirdValue < 125)
maincolor[16]++;
else
maincolor[17]++;
}
else
{
if (obj.thirdValue < 125)
maincolor[18]++;
else
maincolor[19]++;
}
}
else if (obj.firstValue < 196)
{
if (obj.secondValue < 200)
{
if (obj.thirdValue < 125)
maincolor[20]++;
else
maincolor[21]++;
}
else
{
if (obj.thirdValue < 125)
maincolor[22]++;
else
maincolor[23]++;
}
}
else if (obj.firstValue < 205)
{
if (obj.secondValue < 200)
{
if (obj.thirdValue < 125)
maincolor[24]++;
else
maincolor[25]++;
}
else
{
if (obj.thirdValue < 125)
maincolor[26]++;
else
maincolor[27]++;
}
}
else
{
if (obj.secondValue < 200)
{
if (obj.thirdValue < 125)
maincolor[28]++;
else
maincolor[29]++;
}
else
{
if (obj.thirdValue < 125)
maincolor[30]++;
else
maincolor[31]++;
}
}

我使用maincolor[i] 来记录区域的最大数量。

上面的方法是可行的,但是我想知道有没有什么方法可以让它的可读性更好,性能开销更小?

最佳答案

未经测试,但您明白了。

编辑:我颠倒了算法以允许提前救助。

int[] firstCutoffs = new int[] { 15, 41, 90, 128, 166, 196, 205 };
int index;

for (int n = 0; obj.firstValue > firstCutoffs[n] && n < firstCutoffs.Length; n++)
index += 4;

if (obj.secondValue >= 200 )
index += 2;

if (obj.thirdValue >= 125 )
index ++;

maincolor[index]++;

关于C# 嵌套 if-else 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12295374/

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