次のコードがあります。
class Tile
{
public TCODColor color { get; protected set; }
public int glyph { get; protected set; }
public Boolean isDigable()
{
return this.Equals(typeof(Wall));
}
public Boolean isGround()
{
return this.Equals(typeof(Floor));
}
}
Wall クラスと Floor クラスはどちらも Tile を継承しています。プログラムの別の時点で、たとえば次のような if ステートメントがあります。
public void dig(int x, int y)
{
if (tiles[x, y].isDigable())
{
tiles[x,y] = new Floor();
}
}
タイルは Tile クラスの 2 次元配列であり、その内容は Floor または Wall として初期化されます。そのため、タイルが Wall の場合、Digable (および true を返す必要があります) ですが、常に false を返すため、他のコードは実行されません。私は C# に慣れていないので、構文に関して何か間違ったことをしていると思いますが、何か提案はありますか?