C# 比较对象上的特定枚举

C# 比较对象上的特定枚举,c#,enums,C#,Enums,那么,当两个对象都有另一种enum颜色时,如何仅将一张卡object(card1)的编号enum与另一张卡object(card2)的编号enum进行比较呢 public enum Number { card_0,card_1 } public enum Color { Red } public Card(int fNum, int fCol) { Number num = (Number)fNum; Color color = (Color)fCol; } 例如,car

那么,当两个对象都有另一种
enum
颜色时,如何仅将一张卡
object(card1)
的编号
enum
与另一张卡
object(card2)
的编号
enum
进行比较呢

public enum Number
{
  card_0,card_1
}
public enum Color
{
   Red
}
public Card(int fNum, int fCol)
{
   Number num = (Number)fNum;
   Color color = (Color)fCol;
}
例如,card1是card_0和红色,card2是card_1和红色。这两张牌在不同的列表中,一张是玩家的手,另一张在弃牌堆中,因此我如何比较数字或颜色的
enum
,以便它知道是接受该牌进入弃牌堆还是拒绝该牌,并说它不是可玩的牌

if(/* Compare card1 and card2 */)
{
  discardPile.Add(card1);
  hand.RemoveAt(/* Location of card1*/);
}
else
{
  /* do something */
}

提前感谢。

我将向
类添加一个进行比较的方法:

public bool DiscardOnTopAllowed(Card otherCard)
{
    bool allowed = false;
    if (Color == otherCard.Color)
       allowed = true;
    else if (Number == otherCard.Number)
       allowed = true;

    return allowed;
}
当然,有一些不太冗长的写作方式,但我试图让它非常明确,因为你正在学习。用法:

if (topCard.DiscardOnTopAllowed(selectedCard))
{
     //Discard is good!
}

您的问题是:如何比较枚举?假设您有两个卡片对象
c1
c2
。要检查它们是否具有与您相同的颜色,请执行以下操作:

if (c1.Color == c2.Color)
{

}
要比较卡号,请执行以下操作:

if (c1.Number == c2.Number)
{

}

另外,我建议更改卡的实现。如果使用枚举,则对枚举而不是整数进行操作。
enum
继承自
int
这一事实只是一个实现细节。但这不是一个数字。例如,它不支持数学运算(这很有意义:Color.Black+Color.Red的预期结果是什么)。所以尽量不要把枚举和整数混在一起。

你能更具体一点吗?显然,你可以写一个只比较数字的方法……我认为你应该试着更好地解释你的问题。对我来说,这一点都不清楚。好吧,我目前正在制作一个类似于UNO的游戏,所以我必须比较我要丢弃的牌是否与丢弃牌堆顶部的数字或颜色相同,所以我决定使用enum来标记数字和颜色,那么如何进行比较?听起来更好?嗯,为了澄清我的构造函数,如果它传入1,0,该卡将被赋予卡_1的枚举,右键为红色?如果你没有在枚举的定义中指定映射,那么它将从0开始。因此,是1和0将导致
卡1
红色
。但我想说的是将c-tor更改为
卡(数字、颜色和颜色)
。然后通过
Card c=new Card(Number.Card_0,Color.Red)
创建一个typ,并且不将枚举与整数混合。如果在
Card
类中不进行比较,该怎么办?@xwillflame逻辑是相同的,但显然需要引用这两个卡(而不是利用
这个
)。这似乎是
的合理行为。