是否可以将If语句的重复发生转换为for循环?

时间:2019-05-15 15:40:17

标签: c#

所以我是编码的新手,我正在研究C#以了解基础知识。

基本上,我想在下面的循环中实现我的代码以最大程度地减少重复。我可以使用哪种类型的循环以及如何实现?

if (Counters[0] == 3)
{
    Console.WriteLine("3 OAK A pays" + PayCombos[2]);
}
else if (Counters[0] == 4)
{
    Console.WriteLine("4 OAK A pays" + PayCombos[1]);
}
else if (Counters[0] == 5)
{
    Console.WriteLine("5 OAK A pays" + PayCombos[0]);
}

if (Counters[1] == 3)
{
    Console.WriteLine("3 OAK A pays" + PayCombos[5]);
}
else if (Counters[1] == 4)
{
    Console.WriteLine("4 OAK A pays" + PayCombos[4]);
}
else if (Counters[1] == 5)
{
    Console.WriteLine("5 OAK A pays" + PayCombos[3]);
}

if (Counters[2] == 3)
{
    Console.WriteLine("3 OAK A pays" + PayCombos[8]);
}
else if (Counters[2] == 4)
{
    Console.WriteLine("4 OAK A pays" + PayCombos[7]);
}
else if (Counters[2] == 5)
{
    Console.WriteLine("5 OAK A pays" + PayCombos[6]);
}

2 个答案:

答案 0 :(得分:1)

您可以使用循环使用foreach来检查数组的每个成员:

int[] Counters = {1, 2, 3, 4, 5};

foreach (int counter in Counters)
{
    if (counter == 3) Console.WriteLine("3 OAK A pays" + PayCombos[2]);
    else if (counter == 4) Console.WriteLine("4 OAK A pays" + PayCombos[1]);
    else if (counter == 5) Console.WriteLine("5 OAK A pays" + PayCombos[0]);
}

for

for(int i = 0; i < Counters.Length; i++)
{
    if (Counters[i] == 3) Console.WriteLine("3 OAK A pays" + PayCombos[2]);
    else if (Counters[i] == 4) Console.WriteLine("4 OAK A pays" + PayCombos[1]);
    else if (Counters[i] == 5) Console.WriteLine("5 OAK A pays" + PayCombos[0]);
}

答案 1 :(得分:0)

很好的问题。

当您要重复操作时,循环是完美的选择。您显然要对多个计数器重复代码的“计数器检查”部分,因此它是使用循环的理想选择。

我认为,最简单的实现方法是将重复的逻辑封装在一个函数中,并将该逻辑与它所针对的“事物”隔离开。

在这种情况下,您正在操作列表中的计数器,并且正在检查值。我建议编写一个简单的函数来对计数器进行检查(即删除列表/数组),然后在循环内调用该函数。

所以

void checkCounter(counter)
{    
    if (counter == 3)
    {
        Console.WriteLine("3 OAK A pays" + PayCombos[8]);
    }
    else if (counter == 4)
    {
        Console.WriteLine("4 OAK A pays" + PayCombos[7]);
    }
    else if (counter == 5)
    {
        Console.WriteLine("5 OAK A pays" + PayCombos[6]);
    }    
}

然后遍历您的计数器就像

foreach (int counter in Counters)
{
    checkCounter(counter)
}