【问题标题】:initializing multi-dim string arrays初始化多维字符串数组
【发布时间】:2011-01-05 13:07:07
【问题描述】:

卡在此处尝试使用循环初始化数组 (c#)。行数将根据情况而变化。我需要取回我在程序 startweek 和 endweek 早些时候计算的两个值。有很多关于使用循环构建 int 数组的示例,但我找不到动态字符串和多暗淡数组。

谢谢

如何在 string[,] arrayWeeks = new string[numWeeks, col1] 中设置 col1 的值;是不是更清楚了?

【问题讨论】:

  • 你的问题是什么?

标签: c# arrays string multidimensional-array


【解决方案1】:

(感谢您的澄清。)您可以像这样执行多维初始化程序:

string[,] arrayWeeks = new string[,] { { "1", "2" }, { "3", "4" }, { "5", "6" }, { "7", "8" } };

或者,如果你的数组是锯齿状的:

string[][] arrayWeeks = new string[][] 
{
    new string[] {"1","2","3"},
    new string[] {"4","5"},
    new string[] {"6","7"},
    new string[] {"8"}
};

如果您处于循环中,我猜您想要锯齿状。而不是使用值进行初始化,您可能需要调用 arrayWeeks[x] = new string[y]; 其中 x 是您要添加的行,y 是该行中的元素数。然后您可以设置每个值:arrayWeeks[x][i] = ... 您在其中设置行中的第 i 个元素。您对数组的初始声明为 string[][] arrayWeeks = new string[numRows][];

所以,总而言之,你可能想要这样的东西:

    int numRows = 2;
    string[][] arrayWeeks = new string[numRows][];
    arrayWeeks[0] = new string[2];
    arrayWeeks[0][0] = "hi";
    arrayWeeks[0][1] = "bye";
    arrayWeeks[1] = new string[1];
    arrayWeeks[1][0] = "aloha";

但是,显然,在你的循环中。

【讨论】:

    【解决方案2】:

    在 C# 中有两种类型的“多维”数组。有正版multidimensional arrays

    string[,] array = new string[4, 4];
    array[0, 0] = "Hello, world!";
    // etc.
    

    还有jagged arrays。锯齿状数组 其元素也是数组的数组。锯齿状数组中的“行”可以有不同的长度。锯齿状数组的一个重要注意事项是您必须手动初始化“行”:

    string[][] array = new string[4][];
    for(int i = 0; i < 4; i++) {
        array[i] = new string[4];
    }
    array[0][0] = "Hello, world!";
    

    【讨论】:

      【解决方案3】:

      如果行数根据某些因素而变化(不固定),最好使用容器,例如 List(参见 list on the MSDN)。您可以在列表中嵌套列表以创建多维列表。

      【讨论】:

        【解决方案4】:

        讨论晚了,但是当您动态设置大小和数据时,这里有一个锯齿状数组示例:

        // rowCount from runtime data
        stringArray = new string[rowCount][];
        
        for (int index = 0; index < rowCount; index++)
        {
            // columnCount from runtime data
            stringArray[index] = new string[columnCount];
        
            for (int index2 = 0; index2 < columnCount; index2++)
            {
                // value from runtime data
                stringArray[index][index2] = value;
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-25
          • 2011-06-04
          • 1970-01-01
          • 2016-11-12
          • 2011-12-11
          • 1970-01-01
          • 2015-08-01
          相关资源
          最近更新 更多