Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从属性返回枚举_C#_Oop_Properties_Enums - Fatal编程技术网

C# 如何从属性返回枚举

C# 如何从属性返回枚举,c#,oop,properties,enums,C#,Oop,Properties,Enums,有没有办法按属性返回完整的枚举?下面是我想做的示例: // MyEnums.cs public enum Languages { cs = 0, pl = 1, en = 2, de = 3, } // General.cs public static MyEnums.Languages Languages { get { return MyEnums.Languages; } } 如果要返回枚举中定义的所有可用值,可以

有没有办法按属性返回完整的枚举?下面是我想做的示例:

// MyEnums.cs
public enum Languages
{
    cs = 0,
    pl = 1,
    en = 2,
    de = 3,
}

// General.cs
public static MyEnums.Languages Languages
{
    get
    {
        return MyEnums.Languages;
    }
}

如果要返回枚举中定义的所有可用值,可以使用

Enum.GetValues(typeof(MyEnums.Languages));

并修改您的方法,使其返回MyEnums.Languages[]或列表,这对于调用代码总是比较容易管理。要获取枚举中的所有值,请使用enum.GetValues。您可能还希望将其转换回正确的类型:

Languages[] languages = Enum.GetValues(typeof(Languages)).Cast<Languages>().ToArray();
// languages is an array containing { Languages.cs, Languages.pl, Languages.en, Languages.de }
enum是一种类型,我猜您实际上想要获取所有enum值。您可以使用此包装器:

public static class EnumWrapper<T> where T : struct
{
    public static T[] Values
    {
        get
        {
            Type ofT = typeof(T);
            if (!ofT.IsEnum) throw new ArgumentException("Must be enum type");
            return Enum.GetValues(ofT).Cast<T>().ToArray();
        }
    }
}
//

Languages[] languages = EnumWrapper<Languages>.Values;

什么为什么要返回完整的枚举?枚举是一种类型,无法返回。否。我想你可能会对什么是枚举感到困惑。它是一种类型,而不仅仅是一个列表。尝试将语言作为值返回与返回System.String;一样有意义;。您是否试图返回一个语言变量,该变量为所有语言设置了标志?我认为OP的要求与复制的要求不一样。的可能复制