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的要求与复制的要求不一样。的可能复制