2011-09-28 61 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) 
}