我目前正在开发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];
}
答案 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}"]