如何检查对象的 属性 值

How to check property value of object

如果对象中 属性 的值相等,我想做一些操作。

我的对象:

//abstract class Tile.cs
namespace DungeonGame.Tiles
{
    public abstract class Tile
    {
        public abstract string Type { get; set; }
    }
}
//Item.cs that iherits from Tile.cs
namespace DungeonGame
{
    public class Item : Tile
    {
        public override string Type { get; set; }
        public string Name { get; set; }


        public Item(string name)
        {
            this.Type = "item";
            this.Name = name;
        }
    }
}

我在 public Object[,] BoardTiles { get; private set; } 中有几个对象,我必须在同一个地方存储不同类型的图块,所以我不得不使用对象类型数组。 我想要做的是用不同类型的对象替换数组索引,具体取决于 属性 的值(在这种情况下,我根据对象类型设置值而不是他的值 属性):

public void movefillRight(int playerPositionRowIndex, int playerPositionColumnIndex)
        {
            for (int r = 0; r < Rows; r++)
            {
                for (int c = 0; c < Cols; c++)

                {
                    if (BoardTiles[playerPositionRowIndex, playerPositionColumnIndex ].GetType().ToString() == ("DungeonGame.Item"))
                    {
/*                        placePlayerOnTheBoard(playerPositionRowIndex, playerPositionColumnIndex, PlayerTile);
*/                        BoardTiles[playerPositionRowIndex, playerPositionColumnIndex] = Item1;
                        BoardTiles[playerPositionRowIndex, playerPositionColumnIndex - 1] = Floor;
                    }
                    else if (BoardTiles[playerPositionRowIndex, playerPositionColumnIndex-1].GetType().ToString() == ("DungeonGame.Item"))
                    {
                        BoardTiles[playerPositionRowIndex, playerPositionColumnIndex-1] = Item1;
                        placePlayerOnTheBoard(playerPositionRowIndex, playerPositionColumnIndex, PlayerTile);
                    }
                    else
                    {
                        placePlayerOnTheBoard(playerPositionRowIndex, playerPositionColumnIndex, PlayerTile);
                        BoardTiles[playerPositionRowIndex, playerPositionColumnIndex - 1] = Floor;
                    }
                }
            }
            Console.WriteLine(BoardTiles[playerPositionRowIndex, playerPositionColumnIndex].GetType().ToString());//log
        }

该函数的功能是当玩家走过时将相同的对象留在相同的索引上,所以问题是当我有一个项目时代码没问题,例如只有剑,但是当有更多项目我总是可以用相同的对象而不是对象 不同的属性替换索引,当玩家走过一把好剑和坏剑(相同的对象,但另一个属性)时,他只留下剑......我知道如何解决这个问题,但我需要参考 属性 值,它位于我的对象数组的特定索引处。

检查数组中的项目是否属于特定类型后,您可以 cast 它。

if (BoardTiles[playerPositionRowIndex, playerPositionColumnIndex ].GetType().ToString() == ("DungeonGame.Item"))
{
    var item = (DungeonGame.Item)BoardTiles[playerPositionRowIndex, playerPositionColumnIndex];
    Console.Writeline(item.Name);
}