我在 c# 中制作一个扫雷项目是为了好玩,我想将新的 Tiles 存储在 Tile 类内的字典中,以便在启动 Tile 时将其存储并可以通过 Tile[coords] 访问但是我不断得到上面错误。这是我用于 Tile 类的代码(请不要评论我的约定,我是 C# 新手,我是 Java/Python 程序员:p)
class Tile
{
private static Dictionary <Coords, Tile> tiles = new Dictionary <Coords, Tile> ();
public int numMinesAdjacents { get; set; }
public readonly bool isMine;
public readonly Coords position;
private Tile [] aAdjacents = new Tile [8];
public Tile(int x, int y, bool isMine = false)
{
this.isMine = isMine;
position = new Coords(x, y);
Tile[position] = this;
}
public void init()
{
calculateAdjacents();
calculateNumMinesAdjacent();
}
private void calculateAdjacents()
{
int i = 0;
for (int y = -1; y < 1; y++)
{
if ((position.y - y) < 0 || (position.y + y) > Math.Sqrt(Program.MAX_TILES)) continue;
for (int x = -1; x < 1; x++)
{
if ((position.x - x) < 0 || (position.x + x) > Math.Sqrt(Program.MAX_TILES)) continue;
aAdjacents [i] = Tile[position + new Coords(x, y)];
i++;
}
}
}
private void calculateNumMinesAdjacent()
{
int n = 0;
foreach (Tile pTile in aAdjacents)
{
if (pTile.isMine) n++;
}
numMinesAdjacents = n;
}
/*private static void add(Tile pTile)
{
tiles.Add(pTile.position, pTile);
}*/
public /*static - if I use static nothing is different*/ Tile this [Coords coords]
{
get { return tiles [coords]; }
}
}
如果我打电话
平铺(0, 0); 平铺(0, 1);
接着
平铺[新坐标(0, 0)]
我得到一个错误,我在使用 Tile[] 的类中的位置(构造函数和 calculateAdjacents)也得到一个错误这里出了什么问题?
谢谢,杰米
编辑:对不起,我的意思是 Tile[position] 我把它改回来并打错了。问题是我重载了它,这应该意味着即使从另一个类调用 Tile[coords] 也是合法的