首页 > 解决方案 > C# 将许多 For 循环重构为一个

问题描述

大家晚上好,我刚开始学习 C# 并做一些任务。所以问题是:我创建了一个二维数组,可以说 int[5,5] 并且我需要更改任何数组:主对角线左侧元素中的值 0,右侧元素中的值 1。任何数组都应该是这样的。所以我写了一个代码,但似乎我必须对其进行重构,但我不知道如何。我将不胜感激任何建议。

int[,] someArray = new int[5,5];
newMatrix(someArray);
int row = someArray.GetLength(0);
int col = someArray.GetLength(1);
for (int i = 1; i < row; i++)
{
   someArray[i, 0] = 0;
}
for (int i = 2; i < row; i++)
{
     someArray[i, 1] = 0;
}
for (int i = 3; i < row; i++)
{
     someArray[i, 2] = 0;
}
for (int i = 4; i < row; i++)
{
     someArray[i, 3] = 0;
 }
 for (int j = 1; j < col; j++)
 {
     someArray[0, j] = 1;
 }

  for (int j = 2; j < col; j++)
  {
      someArray[1, j] = 1;
  }
   for (int j = 3; j < col; j++)
  {
      someArray[2, j] = 1;
  }
  for (int j = 4; j < col; j++)
  {
       someArray[3, j] = 1;
  }

`

标签: c#arraysfor-loop

解决方案


我会这样重构它:

for (int i=0; i<row; i++)
    for (int j=0; j<col; j++)
        if (i == j)
            someArray[i, j] = ?; // main diagonal
        else
            someArray[i, j] = (j > i) ? 1 : 0;

推荐阅读