我想在类中定义一个枚举。该类将具有枚举类型的公共属性。我希望本课程以外的课程能够参考这门课程。枚举属性,但我不希望其他类能够创建自己的枚举实例。这甚至可能吗?考虑这个例子:
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
}
}
在我看来,我可以选择将枚举定义为公共,让任何其他类创建它的实例,或者将其设置为私有而不能从类外部设置它。
答案 0 :(得分:2)
您不会将枚举实例化为类,因此您无法阻止某人使用它。在课堂上,你可以拥有一个私人ctor ......用Enums显然是不可能的。
所以是的,你的假设是正确的,无论是内部还是私人,或者公开......;)
顺便说一下,我想不出任何一个好的场景,你想在使用Enum的公共财产时隐藏Enum,即使它尽可能这样做。