是否可以在C#中将公共内部枚举或类的实例限制为其父类?

时间:2014-11-11 17:41:25

标签: c# enums access-modifiers

我想在类中定义一个枚举。该类将具有枚举类型的公共属性。我希望本课程以外的课程能够参考这门课程。枚举属性,但我不希望其他类能够创建自己的枚举实例。这甚至可能吗?考虑这个例子:

public class MyClassWithEnum
{
    public Season MySeason { get; set; }
    public enum Season { Winter, Spring, Summer, Fall }
}

public class OutsideClass
{
    public void OutsideClassMethod()
    {
        MyClassWithEnum enumClass = new MyClassWithEnum();

        enumClass.MySeason = MyClassWithEnum.Season.Spring;                     // This should be okay
        MyClassWithEnum.Season localSeason = MyClassWithEnum.Season.Winter;     // This should NOT be okay
    }
}

在我看来,我可以选择将枚举定义为公共,让任何其他类创建它的实例,或者将其设置为私有而不能从类外部设置它。

1 个答案:

答案 0 :(得分:2)

您不会将枚举实例化为类,因此您无法阻止某人使用它。在课堂上,你可以拥有一个私人ctor ......用Enums显然是不可能的。

所以是的,你的假设是正确的,无论是内部还是私人,或者公开......;)

顺便说一下,我想不出任何一个好的场景,你想在使用Enum的公共财产时隐藏Enum,即使它尽可能这样做。