首页 文章

如何实现此公共可访问枚举

提问于
浏览
4

我正在尝试访问我 class 的私人词汇 . 但我不明白与其他成员相比,让它运作所需的差异;

如果这样做:

private double dblDbl = 2;

//misc code

public double getDblDbl{ get{ return dblDbl; } }

为什么我不能用enum做呢?

private enum myEnum{ Alpha, Beta};

//misc code

public Enum getMyEnum{ get{ return myEnum; } }
//throws "Window1.myEnum" is a "type" but is used like a variable

3 回答

  • 5

    你在这里有两件非常不同的事情 .

    在第一个示例中,您将定义公共类型的私有字段 . 然后,您将通过公共方法返回已公开类型的实例 . 这是有效的,因为类型本身已经公开 .

    在第二个示例中,您将定义一个私有类型,然后通过公共属性返回一个实例 . 类型本身是私有的,因此不能公开暴露 .

    第二种情况的更相同的例子如下

    public enum MyEnum { Alpha, Beta }
    // ... 
    private MyEnum _value;
    public MyEnum GetMyEnum { get { return _value; } }
    
  • 3

    在第一个示例中,您声明了一个double类型的字段,然后声明一个访问它的属性 . 在第二个示例中,声明一个枚举类型,然后尝试返回属性中的类型 . 您需要声明枚举类型,然后声明使用它的字段:

    public enum MyEnum{ Alpha, Beta};
    
    private MyEnum myEnum = MyEnum.Alpha;
    
    //misc code
    
    public Enum getMyEnum{ get{ return myEnum; } }
    

    枚举类型也需要公开,因为使用它的属性是公共的 .

  • 0

    枚举需要是公共的,因此其他类型可以引用它 - 您希望存储对该枚举的实例的私有引用:

    public enum myEnum { Alpha, Beta }
    
    public class Foo
    {
        private myEnum yourEnum = myEnum.Alpha;
        public myEnum getMyEnum
        { 
            get { return yourEnum; } 
        }
    }
    

相关问题