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
        }
    }
}