我听说在C#中无法嵌套enum
。那么如何将以下结构转换为类层次结构或其他内容。所以我希望课程充当enum
答案 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
}