1

我正在做的是将 ac# 项目转换为 java 以练习编写自定义类。不幸的是,我无法弄清楚这个人在构造函数中使用“this”关键字做什么。

// C# Code - How is this written in Java?
public Player this[int x, int y] 
{ 
    get { return squares[x, y]; } 
    set { squares[x, y] = value; } 
}

我已经转置了很多代码并且有点卡住了。我似乎无法在 Java 中找到有关此特定实例的任何信息。有人对我有好的线索吗?

4

3 回答 3

9

那不在构造函数中。那是indexer的声明。Java 等价物类似于:

public Player getPlayer(int x, int y)
{
    // Note: Java doesn't have "real" multidimensional arrays,
    // only arrays of arrays.
    return squares[x][y];
}

public Player setPlayer(int x, int y, Player player)
{
    squares[x][y] = player;
}
于 2012-08-15T18:08:36.930 回答
0

这是使用索引器(C#)

这个博客有一些关于如何将 C# 索引器移植到 java 代码的想法。

基本上它可以在java getter/setter中实现:

public Player get(int x, int y) { return squares[x][y];}

public Player set(int x, int y, Player p) { squares[x][y] = p;}
于 2012-08-15T18:08:28.387 回答
0

那不是构造函数,那是indexer。基本上,此定义允许您执行以下操作:

Player playerAtOrigin = myGameBoard[0, 0];

在Java 中,只有数组有索引器(例如myArray[i]),您不能定义自己的索引器。最有可能的是,您需要将其转换为两种方法getPlayerAt(int x, int y)setPlayerAt(int x, int y, Player player).

于 2012-08-15T18:08:38.370 回答