C#中的动态变量名?
(我并不需要这个函数,但我只是想知道。) 想象一下,在这个函数中,我传递了一个C#中的动态变量名?,c#,variable-names,C#,Variable Names,(我并不需要这个函数,但我只是想知道。) 想象一下,在这个函数中,我传递了一个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++) {
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
}
}
}
void检查网格(布尔[,]网格,整数)
{
for(int x=0;xNo-对象没有名称,只有变量有名称。因此,尽管您将引用传递给数组,但该方法无法知道您是使用了名为grid1
的变量作为参数还是使用了名为grid2
的变量
通常,当有这样的问题时,答案包括说您可以使用反射按名称访问成员变量,但这样做通常不是一个好主意,而使用单个变量作为集合是一个更好的主意。然而,在您的问题中,您很不清楚您到底想做什么……如果它正在尝试的话确定“对象名称”的步骤一般来说,这肯定是不可行的。你最好给你的函数传递一个标志,它允许你根据你处理的是grid1还是grid2来更新你的逻辑。当你使用像这样的$$var时,这种事情在PHP中就存在了,$var将保存grid1并变成$grid1
我唯一的建议是在字典中使用键/值对,并将数字连接到“网格”您可以创建一个网格数组,然后使用数字值来检查它
List<bool[,] grids = new List<bool[,]>();
向数组中添加维度
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
}
}
}
void检查网格(布尔[,]网格,整数)
{
例如(int x=0;x鉴于number
是一个int,我真的不知道你希望number[x,y]
做什么。你能不能把网格作为方法的一个参数?幸运的是你对我的例子的解释是正确的,因为它似乎是一个糟糕的例子。字典确实可能是一个解决方案:)PHP不是一种静态类型的语言,所以你可以做各种疯狂的事情:)我的例子确实不好,我正在尝试新的例子:)@SimonVerbeke:只是出于兴趣,如果你想不出一个好的例子,为什么它能否实现对你来说很重要?我会把重点放在你真正想要使用的技术上:)我只是在思考这样一件事。我在仔细思考之前问了它。现在我意识到确实没有办法使用它。除了,也许Norla说的。但这也可以通过常规循环来实现。@JonSkeet如果网格是用户界面的元素,相应的类很可能有一个名称属性。新手程序员有时会被设计工具创建名为addressGrid
的变量,以引用名为“addressGrid”的控件。
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
}
}
}