如何基于分配给它们的标志对变量数组进行分组,使用C#中的最少代码

Tec*_*Tru 2 c# arrays

我有一个有四个元素示例的数组:

int[] a = new int[5];
Run Code Online (Sandbox Code Playgroud)

价值如下: a[0] = 10,a[1]=5,a[2]=15,a[3]=10,a[4]=0;

我有旗帜,

public bool[] flag = new bool[4]{false,false,false,false};
Run Code Online (Sandbox Code Playgroud)

基于此我需要将上述值分配给另一个名为的变量b[5].

如果是标志false,它将add是现有的b值,

否则它会重置的值ab.

我试过以下代码似乎太冗长了

count[0]=20,count[1]=20;count[2]=20;count[3]=20;
flag[0]=true,flag[1]=true,flag[2]=true,flag[3]=false;

void display(int[] count,int[]flag)
{         
    if (flag[0] == true)
    {
        resetcount[0] = count[0];
    }
    if(flag[1]==true)
    {
        resetcount[1] = count[1];
    }
    if (flag[2] == true)
    {
        resetcount[2] = count[2];
    }
    if(flag[3]==true)
    {
        resetcount[3] = count[3];
    }
    if (flag[0] == false)
    {
        resetcount[0] += count[0];
    }
    if (flag[1] == false)
    {
        resetcount[1] += count[1];
    }
    if (flag[2] == false)
    {
        resetcount[2] += count[2];
    }
    if (flag[3] == false)
    {
        resetcount[3] += count[3];
    }
}
Run Code Online (Sandbox Code Playgroud)

这里 resetcount[0]=10,resetcount[1]=10,resetcount[2]=10,resetcount[3]=10;

如果所有标志都为假,则计数值将被添加,如果为真,则计数值将被设置为重置计数,如上所述,它将为0,1,2

count[0]=20,count[1]=20;count[2]=20;count[3]=20;
flag[0]=true,flag[1]=true,flag[2]=true,flag[3]=false;
resetcount[0]=10,resetcount[1]=10,resetcount[2]=10,resetcount[3]=10;
Run Code Online (Sandbox Code Playgroud)

所以现在resetcount将是:

resetcount[0]=20,resetcount[1]=20,resetcount[2]=20,resetcount[3]=30;
Run Code Online (Sandbox Code Playgroud)

JNF*_*JNF 5

像一个循环?

count[0]=20,count[1]=20;count[2]=20;count[3]=20;
flag[0]=true,flag[1]=true,flag[2]=true,flag[3]=false;

void display(int[] count,int[]flag)
{         
  for (int i = 0 ; i<=3 ; i++)
  {
    if (flag[i])
    {
      resetcount[i] = count[i];
    }
    else
    {
      resetcount[i] += count[i];
    }
Run Code Online (Sandbox Code Playgroud)

}