一个数组 C# 中的许多枚举

本文关键字:许多 枚举 数组 一个 | 更新日期: 2023-09-27 18:33:27

我一直在寻找如何制作一个具有许多不同枚举的数组。

我正在尝试做的是例如使用枚举

public enum playerTeam
{
    Red,
    Blue
};

另一个与

public enum currentWeapon
{
    Knife,
    Gun,
    Rifle,
    Shotgun,
    SniperRifle,
    RocketLauncher,
    Grenade,
    Molotov,
    FlameThrower,
    ProximityMine,
    RemoteMine
};

然后将它们分配给一个名为

Players[]

然后能够通过数组循环并设置每个枚举的值。我以前使用过没有数组的枚举。设置/获取播放器的数据。但现在我即将将我的项目扩展到多人游戏。而且我不知道如何将枚举添加到一个数组中。因为这会使代码更容易处理。

这真的很难解释,希望你们理解。

一个数组 C# 中的许多枚举

我建议你创建一个类Player,其中的成员WeaponTeam。然后使用播放器实例执行操作。

class Player
{
    Weapon CurrentWeapon {get; set;}
    Team Team {get; set;}
}

考虑到 C# 允许你做的事情,这是一种奇怪的看待事物的方式。充其量,为了达到你想要的,你可以使用一些将关键映射到价值观(玩家到武器/团队)的东西,比如System.Collections.Generic.Dictionary

但真的没有必要这样做。Player 类应在两个字段中包含该信息:

class Player
{
   ...
   private Team currentTeam;
   private Weapon currentWeapon;
   ...
}

从你如何命名枚举和你的想法来看,我认为你还应该从头到尾关注 C# 和 OOP 的学习资源。

这有点荒谬,因为团队肯定不是武器(wtf 是当前武器,而不是武器),但如果你问如何使用枚举和位标志,你可以写

[Flags]
public enum Weapon
{
    ...
    WeaponMask = 0xFF
    IsBlueTeam = 0x0100
}

这允许你做

switch(player[i] & WeaponMask) { case SomeWeapon: ... }
isBlueTeam = (player[i] & IsBlueTeam) != 0 //assuming its either blue or read