4

我习惯了 C 中的枚举,仍然对 C# 中如何处理它们感到有些困惑。我想在 C# 中实现一个看起来像的接口

enum foo {
  one,
  two 
}

interface Ibar {
  enum foo {get;}
}

当获取属性 foo 时,实现接口 Ibar 的类将返回 foo.one 或 foo.two。所以,例如

class bar : Ibar {
  enum foo {
    get { return foo.one; }
  }
}

我能做到

bar b = new bar;
if (b.foo == foo.one) {... }

上面的接口代码希望我在接口内定义枚举(它说';'应该是',')。

我能找到的最接近的帖子是http://bytes.com/topic/c-sharp/answers/524824-enum-property-interface但枚举是在类中定义的。

4

2 回答 2

4

我认为你想要的语法是这样的:

enum Foo
{
    One,
    Two 
}

interface IBar
{
    Foo Foo { get; }
}

结果是一个具有名为Footype的属性的接口Foo

于 2012-11-09T09:30:43.157 回答
1

你想要的语法是:

enum foo { one, two }

interface Ibar { foo foo { get; } }

class bar : Ibar { foo foo { get { return foo.one; } } }

你只enum用来定义一个新的枚举;创建成员变量时,您使用已创建的枚举的名称

但是,最好不要将成员变量命名为与枚举类型相同的名称:

enum FooEnum { One, Two }

interface IBar { FooEnum FooValue { get; } }

class Bar : IBar { FooEnum FooValue { get { return FooEnum.one; } } }

(请注意,我只使用EnumValue澄清了哪个是枚举类型,哪个是值,不要这样做。)

(另外,我认为这更像是通常的 C# 大小写约定。)

于 2012-11-09T09:31:43.640 回答