[英]Dynamic variable names in C#?
(我并不需要一个实际的功能,但是我只是想知道。)
想象一下我在传递bool[,]
函数。 根据情况,此bool[,]
名为grid1
或grid2
。
我想知道我是否可以做以下事情:
void CheckGrid(bool[,] grid, int number)
{
for (int x = 0; x <= gridXmax - 1; x++)
{
for (int y = 0; y <= gridYmax - 1; y++)
{
if(grid + number[x,y]) //this will check against grid1 or grid2, depending on int number
//logic depends on whether it's grid1 or grid2
}
}
}
根据其他语言的问题猜测,可能是不可能的。 但是你永远不知道:)
我很可能在这里遗漏了一些明显的东西-我并不是很经验丰富。
您可以创建一个网格数组,然后使用数字值进行检查。
List<bool[,] grids = new List<bool[,]>();
然后
if (grids[number][x,y])...
否- 对象没有名称,只有变量具有名称。 因此,尽管您传递了对数组的引用,但是该方法无法知道您是偶然使用了名为grid1
的变量作为参数还是使用名为grid2
的变量。
通常,当有类似这样的问题时,答案是说您可以使用反射来按名称访问成员变量,但这通常不是一个好主意-使用单个变量作为集合是一个更好的主意。 然而,在你的问题是不太清楚你想要做的反正...如果它试图确定那么这是一般的绝对不可行“的对象的名称”。
最好将一个标志传递给函数,这将使您可以根据要处理的是grid1还是grid2来更新逻辑。
当您使用类似$$ var之类的东西时,PHP中会存在这种情况,其中$ var将容纳grid1并变成$ grid1
我唯一可以建议的是在字典中使用键/值对并将数字连接为“网格”
向数组添加维度。
void CheckGrid(bool[,,] grid, int number)
{
for (int x = 0; x <= gridXmax - 1; x++)
{
for (int y = 0; y <= gridYmax - 1; y++)
{
if(grid[number, x,y]) //this will check against grid1 or grid2, depending on int number
//logic depends on whether it's grid1 or grid2
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.