Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据无名对象的属性引用它们?_C#_Variables_Object - Fatal编程技术网

C# 如何根据无名对象的属性引用它们?

C# 如何根据无名对象的属性引用它们?,c#,variables,object,C#,Variables,Object,如何引用无名对象? 对于一个游戏,如果我制作一个正方形网格并使用 for (int X =0; X <= 10; X++) { for(int Y =0; Y <= 10; Y++) { new Cell(X, Y); } } 指的是细胞的坐标之类的 哈尔普。我不能只有1000个或更多的细胞,每个细胞都有自己的宠物名字。必须有一种方法来检查,例如,通过某个东西的坐标来检查某个东西的邻居,而不产生新的细胞 基本上,我遇到的问题是,例如,对于每个

如何引用无名对象? 对于一个游戏,如果我制作一个正方形网格并使用

for (int X =0; X <= 10; X++)
{
    for(int Y =0; Y <= 10; Y++)
    {
        new Cell(X, Y);
    }
}
指的是细胞的坐标之类的

哈尔普。我不能只有1000个或更多的细胞,每个细胞都有自己的宠物名字。必须有一种方法来检查,例如,通过某个东西的坐标来检查某个东西的邻居,而不产生新的细胞

基本上,我遇到的问题是,例如,对于每个邻居检查,我都会创建新的默认单元格,这些单元格返回错误的值


例如,如果你们中有人能给我一个很好的函数,它可以检查其向上邻域的
布尔值
IsWalkable
。。。非常感谢您创建一个数组,然后将您的单元格存储在其中

Cell[,] cells = new Cell[10,10];
for (int X =0; X <= 10; X++)
{
    for(int Y =0; Y <= 10; Y++)
    {
        cells[X,Y] = new Cell(X, Y);
    }
}
只要操纵坐标,就很容易找到邻居。例如,如果每个单元格也有自己的X和Y坐标(构造函数参数建议这样做),则可以执行以下操作:

Cell cellAboveMe = cells[someCell.X, someCell.Y - 1]; 
尽管请注意,您希望包括边界检查(如果
Y==0
,则此单元格上方没有单元格)

这是非常基本的东西,所以您需要了解数组是如何工作的。请看这里:


例如。

创建一个数组,然后将单元格存储在其中

Cell[,] cells = new Cell[10,10];
for (int X =0; X <= 10; X++)
{
    for(int Y =0; Y <= 10; Y++)
    {
        cells[X,Y] = new Cell(X, Y);
    }
}
只要操纵坐标,就很容易找到邻居。例如,如果每个单元格也有自己的X和Y坐标(构造函数参数建议这样做),则可以执行以下操作:

Cell cellAboveMe = cells[someCell.X, someCell.Y - 1]; 
尽管请注意,您希望包括边界检查(如果
Y==0
,则此单元格上方没有单元格)

这是非常基本的东西,所以您需要了解数组是如何工作的。请看这里:


例如。

创建一个数组,然后将单元格存储在其中

Cell[,] cells = new Cell[10,10];
for (int X =0; X <= 10; X++)
{
    for(int Y =0; Y <= 10; Y++)
    {
        cells[X,Y] = new Cell(X, Y);
    }
}
只要操纵坐标,就很容易找到邻居。例如,如果每个单元格也有自己的X和Y坐标(构造函数参数建议这样做),则可以执行以下操作:

Cell cellAboveMe = cells[someCell.X, someCell.Y - 1]; 
尽管请注意,您希望包括边界检查(如果
Y==0
,则此单元格上方没有单元格)

这是非常基本的东西,所以您需要了解数组是如何工作的。请看这里:


例如。

创建一个数组,然后将单元格存储在其中

Cell[,] cells = new Cell[10,10];
for (int X =0; X <= 10; X++)
{
    for(int Y =0; Y <= 10; Y++)
    {
        cells[X,Y] = new Cell(X, Y);
    }
}
只要操纵坐标,就很容易找到邻居。例如,如果每个单元格也有自己的X和Y坐标(构造函数参数建议这样做),则可以执行以下操作:

Cell cellAboveMe = cells[someCell.X, someCell.Y - 1]; 
尽管请注意,您希望包括边界检查(如果
Y==0
,则此单元格上方没有单元格)

这是非常基本的东西,所以您需要了解数组是如何工作的。请看这里:


例如。

您需要创建一个类型为
单元格的数组

Cell[,] myCells = new Cell[10,10]
改变
新单元(X,Y)
菌丝体[X,Y]=新细胞()

从此处,您始终可以引用任何单元格:
菌丝体[1,2].DoSomething()

您需要创建一个属于您的类型的数组
Cell

Cell[,] myCells = new Cell[10,10]
改变
新单元(X,Y)
菌丝体[X,Y]=新细胞()

从此处,您始终可以引用任何单元格:
菌丝体[1,2].DoSomething()

您需要创建一个属于您的类型的数组
Cell

Cell[,] myCells = new Cell[10,10]
改变
新单元(X,Y)
菌丝体[X,Y]=新细胞()

从此处,您始终可以引用任何单元格:
菌丝体[1,2].DoSomething()

您需要创建一个属于您的类型的数组
Cell

Cell[,] myCells = new Cell[10,10]
改变
新单元(X,Y)
菌丝体[X,Y]=新细胞()

从此处,您始终可以引用任何单元格:
菌丝体[1,2].DoSomething()

将它们放入(可能是多维的)数组中。如果不存储引用,则无法再次引用它们。正如@Matt所说,如果不保留引用,则无法再次获取它们。但不仅如此,一旦您超出
new Cell()
行,它们将可用于垃圾收集,并且可能不再存在。请将它们放入(可能是多维的)数组中。如果不存储引用,则无法再次引用它们。正如@Matt所说,如果不保留引用,则无法再次获取它们。但不仅如此,一旦您超出
new Cell()
行,它们将可用于垃圾收集,并且可能不再存在。请将它们放入(可能是多维的)数组中。如果不存储引用,则无法再次引用它们。正如@Matt所说,如果不保留引用,则无法再次获取它们。但不仅如此,一旦您超出
new Cell()
行,它们将可用于垃圾收集,并且可能不再存在。请将它们放入(可能是多维的)数组中。如果不存储引用,则无法再次引用它们。正如@Matt所说,如果不保留引用,则无法再次获取它们。但不仅如此,一旦您超出
new Cell()
行,它们将可用于垃圾收集,并且可能不再存在;这就是我要说的,这不是克隆了单元格还是创建了一个新对象?@AlexMitan:假设
cell
是一个引用类型(类)而不是一个值类型(结构),不。它不会克隆它,也不会创建一个新对象。对于OutOfRange异常,您正在向超出范围的数组传递索引。'code'单元格[,]TestField=new单元格[9,9];for(int-cX=0;cX<8;cX++){for(int-cY=0;cY<8;cY++){TestField[cX,cY]=new-Cell(cX,cY);}}“code”也返回一个OutOfRange…@AlexMitan:不,它不返回(请参见此处:)。没有