2011-09-28 34 views
0

如何在接口中使用枚举数据类型?C中的接口中的枚举数据类型#

这可能吗?

public interface IParent1 
{ 
    string method1(Test enum); 
} 

public class Parent1 : IParent1 
{ 
    public enum Test 
    { 
     A, 
     B, 
     C 
    } 

    public string method1(Test enum) 
    { 
     return enum.ToString(); 
    } 
} 
+0

当您尝试时发生了什么? (尽管使用关键字是不可能的(除非它们以'@'作为前缀) –

回答

10

enum是C#中的保留关键字。如果你想使用它作为变量名可以用@它的前缀:

public enum Test { A, B, C }; 

public interface IParent1 
{ 
    string method1(Test @enum); 
} 

public class Parent1 : IParent1 
{ 
    public string method1(Test @enum) 
    { 
     return @enum.ToString(); 
    } 
} 

,但我不喜欢使用保留字作为变量名。更好的方法是:

public enum Test { A, B, C }; 

public interface IParent1 
{ 
    string method1(Test test); 
} 

public class Parent1 : IParent1 
{ 
    public string method1(Test test) 
    { 
     return test.ToString(); 
    } 
} 
+0

或者更好的是,为了清晰和易读,请将参数的名称更改为不是C#中保留字的内容(或最好一般在任何.NET语言中)。 – DeCaf

0

没有看到任何问题。但为什么你在接口实现中嵌套你的枚举声明?您的代码将无法编译,因为: 1.您使用保留字enum 2. value未声明

尝试使用这样的:

public enum Test { A, B, C }; 

public interface IParent1 { string method1(Test @enum);} 

public class Parent1 : IParent1 
{ 
    public string method1(Test @enum) 
    { 
     return @enum.ToString(); 
    } 
} 
0

如果你希望你的枚举在每个不同实现类,你应该使用像

public interface MyInterface<T> 
{ 
    string MyMethod(T myEnum) 
} 

通用接口如果它应该是相同的所有实现类就是不把它放在任何类的外部:

public enum MyEnum { A, B, C } 

public interface MyInterface 
{ 
    string MyMethod(MyEnum myEnum) 
}