c#接口中的枚举数据类型

本文关键字:枚举 数据类型 接口 | 更新日期: 2023-09-27 18:09:58

如何在接口中使用enum数据类型?

这可能吗?

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();
    }
}

c#接口中的枚举数据类型

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();
    }
}

看不出有什么问题。但是为什么要在接口实现中嵌套枚举声明呢?你的代码将无法编译,因为:1. 你正在使用保留字enum2. 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();
    }
}

如果你希望你的enum在每个实现类中都是不同的,你应该使用像

这样的泛型接口
public interface MyInterface<T>
{
    string MyMethod(T myEnum)
}

如果对于所有实现类都应该是相同的,只是不要把它放在任何类的外部:

public enum MyEnum { A, B, C }
public interface MyInterface
{
    string MyMethod(MyEnum myEnum)
}