你怎么能用enum
C#枚举一下?
例如,以下代码无法编译:
public enum Suit
{
Spades,
Hearts,
Clubs,
Diamonds
}
public void EnumerateAllSuitsDemoMethod()
{
foreach (Suit suit in Suit)
{
DoSomething(suit);
}
}
Run Code Online (Sandbox Code Playgroud)
并给出以下编译时错误:
'Suit'是'type',但用作'变量'
Suit
关键字失败,第二个关键字失败.
这个问题在这里已有答案:
如何在C#中枚举枚举? 26个答案
public enum Foos
{
A,
B,
C
}
Run Code Online (Sandbox Code Playgroud)
有没有办法循环可能的值Foos
?
基本上?
foreach(Foo in Foos)
Run Code Online (Sandbox Code Playgroud) 如何将以下枚举转换为字符串列表?
[Flags]
public enum DataSourceTypes
{
None = 0,
Grid = 1,
ExcelFile = 2,
ODBC = 4
};
Run Code Online (Sandbox Code Playgroud)
我找不到这个确切的问题,这个Enum to List是最接近但我特别想要的List<string>
我有一个枚举,我想显示所有可能的值.有没有办法获取枚举的所有可能值的数组或列表,而不是手动创建这样的列表?例如,如果我有一个枚举:
public enum Enumnum { TypeA, TypeB, TypeC, TypeD }
Run Code Online (Sandbox Code Playgroud)
我怎么能得到一个List<Enumnum>
包含{ TypeA, TypeB, TypeC, TypeD }
?
假设我有以下枚举值
enum Language
{
CSharp= 0,
Java = 1,
VB = 2
}
Run Code Online (Sandbox Code Playgroud)
我想将它们转换为值列表(即) { CSharp,Java,VB}.
如何将它们转换为值列表?
public enum VehicleData
{
Dodge = 15001,
BMW = 15002,
Toyota = 15003
}
Run Code Online (Sandbox Code Playgroud)
我想在字符串数组中得到值15001,15002,15003,如下所示:
string[] arr = { "15001", "15002", "15003" };
Run Code Online (Sandbox Code Playgroud)
我试过下面的命令,但这给了我一些名字而不是值.
string[] aaa = (string[]) Enum.GetNames(typeof(VehicleData));
Run Code Online (Sandbox Code Playgroud)
我也尝试过,string[] aaa = (string[]) Enum.GetValues(typeof(VehicleData));
但也没有用.
有什么建议?
我可以通过哪种方式实现枚举值的下拉列表?
我有这样的枚举:
public enum ValueEnum : byte
{
[Description("Value 1")]
Value1 = 1,
[Description("Value 2")]
Value2 = 2,
[Description("Value 3")]
Value3 = 4
}
Run Code Online (Sandbox Code Playgroud)
我想从服务器端的多个选择而不是选定值列表中获取单个值:
public ActionResult ValueAction(ValueEnum result)
{
//too many code
return View();
}
Run Code Online (Sandbox Code Playgroud)
结果可以是ValueEnum.Value1
或ValueEnum.Value1 | ValueEnum.Value3
没有客户端总和,有没有办法做到这一点?
我有一个Silverlight(WP7)项目,并希望将枚举绑定到列表框.这是一个包含自定义值的枚举,位于类库中.我该怎么做呢?
一开始,我们有这个基本的枚举.
public enum E_Levels {
[ValueOfEnum("Low level")]
LOW,
[ValueOfEnum("Normal level")]
NORMAL,
[ValueOfEnum("High level")]
HIGH
}
Run Code Online (Sandbox Code Playgroud)
而且我想得到List<string>
任何一个枚举.这样的东西Extensions.GetValuesOfEnum<E_Levels>()
可以返回List<string>
"低级别","正常级别"和"高级别".
StackOF帮助我获得了一个值属性:
public static class Extensions {
public static string ToValueOfEnum(this Enum value) {
FieldInfo fieldInfo = value.GetType().GetField(value.ToString());
ValueOfEnum[] attribs = fieldInfo.GetCustomAttributes(typeof(ValueOfEnum), false) as ValueOfEnum[];
return attribs.Length > 0 ? attribs[0].value : null;
}
}
Run Code Online (Sandbox Code Playgroud)
无论枚举如何,我都可以调用这种方法:E_Levels.LOW.ToValueOfEnum()
.
此外,StackOF帮助我获得了List<string>
一个特定的枚举.我在控制器中制作了这个方法:
private List<string> GetLevels() {
List<string> levelsToReturn = new List<string>();
var levels = Enum.GetValues(typeof(E_Levels)).Cast<E_Levels>(); …
Run Code Online (Sandbox Code Playgroud) 这是一个"怪异"的问题:
是否有可能创建一种方法,在其中将任何枚举转换为列表.这是我目前正在思考的草案.
public class EnumTypes
{
public enum Enum1
{
Enum1_Choice1 = 1,
Enum1_Choice2 = 2
}
public enum Enum2
{
Enum2_Choice1 = 1,
Enum2_Choice2 = 2
}
public List<string> ExportEnumToList(<enum choice> enumName)
{
List<string> enumList = new List<string>();
//TODO: Do something here which I don't know how to do it.
return enumList;
}
}
Run Code Online (Sandbox Code Playgroud)
只是好奇是否可能以及如何做到这一点.
c# ×10
enums ×7
.net ×3
asp.net-mvc ×1
enumeration ×1
generic-list ×1
generics ×1
linq ×1
list ×1
loops ×1
xaml ×1