如何在C#中创建具有不同名称的数组?

时间:2019-02-06 13:50:30

标签: c# arrays variables

我目前正在开发25个块(即5x5)的游戏(控制台应用程序)。所有块都在一个List(5x5)中,最后是Level。 我不想声明所有数组。我想在女巫中写一个方法,将声明数组但名称更改。
例如:
-ac_Array_1
-ac_Array_2

    static void Level()
    {
        List<char[,]> ol_Level = new List<char[,]>();

    }
    static void Spielblock()
    {
        int i_Stelle = 1;
        string s_ArrayName = "ac_Chunk_" + i_Stelle;
        i_Stelle++;
        char[,] /*NAME*/ = new char[5, 5];
    }

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

int numOfLevels = 5;

Dictionary<string, char[,]> ol_Level = Enumerable
    .Range(1, numOfLevels)
    .ToDictionary(k => $"ac_Chunk_{k}", v => new char[5,5]);

ac_Chunk = ol_Level["ac_Chunk_1"];//char[5,5]

for (int i_Row = 0; i_Row < ac_Chunk.getLength(0); i_Row++) 
{ 
    for (int i_column = 0; i_column < ac_Chunk.getLength(1); i_column++) 
    { 
        ac_Chunk[i_Row, i_column] = '#'; 
    } 
} 

...

级别:

ac_Chunk_1, ac_Chunk_2, ac_Chunk_3, ac_Chunk_4, ac_Chunk_5

n.b。使用System.Linq和C#6.0 $插值

答案 1 :(得分:1)

要拥有一个像您所要求的动态变量名并不是一件容易的事。

通常,变量名在编译时是已知的,编译器可以使用该信息进行优化。您所要求的将阻止这种情况的发生。

因此,您看到的建议是:创建一个变量,例如字典,在编译和编写代码时会知道。使该变量可以动态扩展以包含任意数量的“块”。使用Dictionary<string, char[,]>,甚至可以给每个块起一个名字。它们不会是单独的变量名,但可以让您按字符串/名称访问它们,并以不同的方式遍历集合。

要在Johnny的答案中添加详细信息,您可以随时使用

var ac_chunk = ol_Level["ac_Chunk_1"];

如果您想重复访问单个块。

或者,甚至更简单,只需继续使用ol_Level[$"ac_Chunk_{chunkNumber}"]