创建数组时出现 C# 错误

本文关键字:错误 数组 创建 | 更新日期: 2023-09-27 18:36:41

我需要为二维数组赋值。我可以使用多个"myArray[x,y]"语句来做到这一点,但我想使用另一种方法(因为我将拥有具有许多行/列的数组) - 请参阅代码:

int x;
x = 1;
string[,] myArray = new string[2, 2]; 

if (x == 1)
  {
    //does not work : why? Would be easier to populate a big array using this
    //myArray=
    //{
    // {"1", "1" },
    // {"1", "1" }
    //} ;
    //works, but I need above code to work if possible
    myArray[0, 0] = "1";
    myArray[0, 1] = "1";
    myArray[1, 0] = "1";
    myArray[1, 1] = "1";
    }
else if (x == 2)
    //does not work
    //myArray=
    //{
     //{"2", "2" },
     //{"2", "2" }
    //} ;
    myArray[0, 0] = "2";
    myArray[0, 1] = "2";
    myArray[1, 0] = "2";
    myArray[1, 1] = "2";
    }

MessageBox.Show(myArray[0,0]);

谢谢

创建数组时出现 C# 错误

我不知道

您是否专门希望对值进行硬编码,但是如果您知道数组的维度始终是[2, 2]则可以遍历所需的x的所有值。

var totalEntries = 10;
for (var x = 1; x <= totalEntries; x++) 
{
    for (var i = 0; i < 2; i++) 
    {
        for (var j = 0; j < 2; j++) 
        {
             myArray[i, j] = x.toString("G");
        }
    }
}

正如您提到的,您需要以这种方式使用它,那么您可以通过声明一个临时变量来初始化其上的值,然后将 temp 变量设置为公共变量,如下所示:

int x;
x = 1;
string[,] myArray = new string[2, 2]; 
if (x == 1)
    {
         string[,] myArrayTemp = {     {"1", "1" },     {"1", "1" }    };
    }
else if (x == 2)
{
      string[,] myArrayTemp = {     {"2", "2" },     {"2", "2" }    };
      myArray = myArrayTemp;    
}

为什么不只是:

if(x == 1 || x == 2) {
  for(int row = 0; row < ROW_COUNT; row ++)
  {
     for(int col = 0; col < COL_COUNT; col++) 
     {
        myArray[row, col] = x.ToString();             
     }
  }
}

不确定if条件是否对您很重要。

如果您正在询问其他问题,请澄清。

您还应该考虑使用循环来填充大型数组。

var size = 1;
for(int i = 0; i <= size; i++)
{
    myArray[0, i] = x.ToString();
    myArray[i, 0] = x.ToString();
}

参考您提出的另一个问题,只需尝试以下方法:

    int x;
    x=1;
    string[,] myArray;
    switch (x)
    {
        case 1:
            myArray =  new string[,]{ { "1", "1" }, { "1", "1" } };     //OK
            break;
        case 2:
            myArray =  new string[,]{ { "2", "2" }, { "2", "2" } };     //OK
            break;
    }

您不能缩短这些作业,即 myArray = { { "2", "2" }, { "2", "2" } };不允许的(语法错误),因为在 C# 中,如果不想事先指定数组大小,则始终需要 new 关键字string[,]来创建新对象和数据类型(对于二维数组)(不需要以这种方式计算元素)。