C# 为什么我的私有枚举对其他类仍然可见
我有一个enum_levels,它被声明为private,但其他类仍然可以访问它。 我想要的是使用属性访问它C# 为什么我的私有枚举对其他类仍然可见,c#,C#,我有一个enum_levels,它被声明为private,但其他类仍然可以访问它。 我想要的是使用属性访问它 请考虑下面的代码。 谢谢 public sealed class TestClass { private static TestClass instance = new TestClass(); private enum _levels { A, B, C, D, E, F, G, H, ASE, SE, SSE, TL, AM };
请考虑下面的代码。
谢谢public sealed class TestClass
{
private static TestClass instance = new TestClass();
private enum _levels { A, B, C, D, E, F, G, H, ASE, SE, SSE, TL, AM };
public TestClass(){}
public static TestClass Instance
{
get { return instance; }
}
public _levels Levels
{
get { return _levels; }
}
}
您的类定义毫无意义,因为枚举类型的定义比具有该类型的属性更难访问
类型定义必须至少与该类型属性在您的案例中的用法一样可见。我认为这就是您试图做到的
public sealed class TestClass
{
public enum Levels { A, B, C, D, E, F, G, H, ASE, SE, SSE, TL, AM };
private Levels _levels;
public Levels Levels
{
get { return _levels; }
}
private static TestClass instance = new TestClass();
public static TestClass Instance
{
get { return instance; }
}
public TestClass(){}
}
枚举是一种类型。不能将类型用作变量 您通过将其作为公共属性返回而将其公开…您的代码甚至无法编译,这正是因为_levelsenum比levels属性更难访问。你是说你希望它是可访问的吗?如果它真的可以编译,我会感到惊讶。我预计会出现不一致的可访问性错误。我想您会发现代码在构建时仍然会出错。错误1可访问性不一致:属性类型“ConsoleApplication8.TestClass.\u levels”比属性“ConsoleApplication8.TestClass.levels”更难访问。您还从级别获取程序返回了一个类型,该类型也不应该编译。@yonan2236,请记住,当您声明枚举时,您声明了一个类型,并且不是该类型的实例:@vc74正确,但是为什么我的内部类型嵌套在外部类下,正如上面代码所示,必须对该类可见或是公共的。他在同一类中创建属性以访问其实例的任何方式。为什么要这样做?这很令人困惑。@yonan2236,只有因为您的属性是公共的,您才必须将枚举公开。否则它可以是私有枚举级别{A、B、C、D、E、F、G、H、ASE、SE、SSE、TL、AM};私有级别级别{get{return_Levels;}}