如何在一个接口中获得一个C#Enum,就像一个C枚举一样?
我习惯于用C语言枚举,但对于C语言如何处理它们仍然有点困惑。我想在C#中实现一个如下所示的接口如何在一个接口中获得一个C#Enum,就像一个C枚举一样?,c#,interface,enums,C#,Interface,Enums,我习惯于用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;
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) {... }
上面的接口代码要求我在接口内定义枚举(它说“;”应该是“,”)
我能找到的最贴切的帖子是,但枚举是在类中定义的。我认为您想要的语法如下:
enum Foo
{
One,
Two
}
interface IBar
{
Foo Foo { get; }
}
结果是一个接口,其属性名为
Foo
,类型为Foo
,语法如下:
enum foo { one, two }
interface Ibar { foo foo { get; } }
class bar : Ibar { foo foo { get { return foo.one; } } }
只能使用enum
定义新的enum;创建成员变量时,使用已创建的枚举的名称
但是,最好不要将成员变量命名为与枚举类型相同的名称:
enum FooEnum { One, Two }
interface IBar { FooEnum FooValue { get; } }
class Bar : IBar { FooEnum FooValue { get { return FooEnum.one; } } }
(注意,我只使用了Enum
和Value
来说明哪一种是枚举类型,哪一种是值,不要这样做。)
(另外,我认为这更像通常的C#casing约定。)不太清楚问题出在哪里。错误消息可能会帮助我们understand@mihai-请参阅下面的答案以了解有关问题的说明。我不同意您的第二个版本。不要将Enum放在Enum的名称中。这是多余的。将属性命名为类型是完全合法的,绝对不是问题。@Daniel我同意,我只是想区分枚举类型和成员。我想在某些情况下,使用相同的枚举可能更合适,但如果不知道枚举代表什么,就很难说了。