C# 为什么我的私有枚举对其他类仍然可见

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 };

我有一个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 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;}}