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

时间:2010-03-18 21:03:34

标签: c# enums enumeration

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

如果有效:

private double dblDbl = 2;

//misc code

public double getDblDbl{ get{ return dblDbl; } }

为什么我不能用枚举来做?

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 个答案:

答案 0 :(得分:5)

这里有两件非常不同的事情。

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

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

第二种情况的更等效示例如下

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

答案 1 :(得分:3)

枚举需要公开,以便其他类型可以引用它 - 您希望将私有引用存储到该枚举的实例中:

public enum myEnum { Alpha, Beta }

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

答案 2 :(得分:0)

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

public enum MyEnum{ Alpha, Beta};

private MyEnum myEnum = MyEnum.Alpha;

//misc code

public Enum getMyEnum{ get{ return myEnum; } }

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