我正在尝试访问我班级的私人词汇。但我不明白与其他成员相比,让它运作所需的差异;
如果有效:
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
答案 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; } }
枚举类型也需要公开,因为使用它的属性是公共的。