c#和类中的嵌套枚举

时间:2011-10-25 07:00:18

标签: c# class enums

我听说在C#中无法嵌套enum。那么如何将以下结构转换为类层次结构或其他内容。所以我希望课程充当enum

enter image description here

4 个答案:

答案 0 :(得分:4)

嵌套类和常量字段

class Cat1
{
    public const int Public = 1;
    public class Private
    {
        public const int Abc = 2;
        public const int Mno = 3;
        public const int Pqr = 4;
    }
}

答案 1 :(得分:2)

public class Cat1
{
  public enum Publicpart
  {
     Xyz
  }

  private enum Privatepart
  {
     Abc, Mno, Pqr
  }
}

然后你可以这样称呼它

Cat1.Publicpart.Xyz

或者如果您有私人访问

Cat1.Privatepart.Abc

答案 2 :(得分:1)

您可以将层次结构用作类结构,每个类都有自己的枚举属性

答案 3 :(得分:1)

如果你想通过枚举来解决这个问题,你应该重新考虑因为第一个枚举类别向我表示某种“可见性”概念,而第二个类别仅对可见性为“公共”的实例有效。

用这样的方法解决你的问题怎么样:

public enum Visibility
{
    Public,
    Private
}

public abstract class VisibilityState
{
    public Visibility Visibility { get; private set; }

    protected VisibilityState(Visibility visibility)
    {
        Visibility = visibility;
    }
}

public class PublicVisibilityState : VisibilityState
{
    public PublicVisibilityState() : base(Visibility.Public) { }
}

public class PrivateVisibilityState : VisibilityState
{
    public PrivateVisibilityState() : base(Visibility.Private) { }
    public OtherEnum OtherEnumState { get; set; }
}

public enum OtherEnum
{
    Abc, Mno, Pqr
}