How do I declare a nested enum?

后端 未结 12 939
借酒劲吻你
借酒劲吻你 2020-12-08 18:29

I want to declare a nested enum like:

\\\\pseudocode
public enum Animal
{
  dog = 0,
  cat = 1
}

private enum dog
{
   bulldog = 0,
   greyhound = 1,
   hus         


        
12条回答
  •  执笔经年
    2020-12-08 19:09

    I would probably use a combination of enumerated bit fields and extension methods to achieve this. For example:

    public enum Animal
    {
       None = 0x00000000,
       AnimalTypeMask = 0xFFFF0000,
       Dog = 0x00010000,
       Cat = 0x00020000,
       Alsation = Dog | 0x00000001,
       Greyhound = Dog | 0x00000002,
       Siamese = Cat | 0x00000001
    }
    
    public static class AnimalExtensions
    {
      public bool IsAKindOf(this Animal animal, Animal type)
      {
        return (((int)animal) & AnimalTypeMask) == (int)type);
      }
    }
    

    Update
    In .NET 4, you can use the Enum.HasFlag method rather than roll your own extension.

提交回复
热议问题