替代操作数 && (C#)

Alternative to operand && (C#)

所以我正在尝试使用 && 编写代码。但是,当我输入它时,它说我无法将操作数应用于它。

具体来说,它是这样写的:运算符“&&”不能应用于'Server.Enums.PokemonType'和'Server.Enums.PokemonType'

类型的操作数

但是,我需要能够 link 这两件事,这样我才能使代码成为两个 PokemonType。那么对于无法使用 && 是否有任何替代方法或变通方法?

如果你需要,这是我的代码:

case 225: 
{
    //Flying Press -- INCOMPLETE, needs Flying-type
    setup.Move.Element = Enums.PokemonType.Fighting && setup.Move.Element = Enums.PokemonType.Flying;
    if (setup.Defender.VolatileStatus.GetStatus("Minimize") != null) 
    {
        setup.Multiplier *= 2;
        setup.Move.Accuracy = -1;
    }
}
break;

系统定义的&&运算符只支持布尔操作数。 & 运算符适用于枚举(因为它也适用于枚举所基于的所有整数类型)。当然,如果您想要一个表示两个标志值组合的枚举,那么您需要将它们组合在一起(使用 |),而不是将它们组合在一起。

要向枚举变量添加多个值,您需要使用 [Flags] 属性声明枚举。

因此您的枚举将是:

[Flags]
public enum PokemonType
{
    Fighting = 1 << 0,
    Flying = 1 << 1,
    Normal = 1 << 2,
    Dragon = 1 << 3,
}

Define enumeration constants in powers of two,即1、2、4、8等。这意味着组合枚举常量中的各个标志不重叠

然后使用 Enums.PokemonType.Fighting | Enums.PokemonType.Flying 赋值,这样以后就可以跟踪分配给它的所有值。