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:不,它不返回(请参见此处:)。没有