是否有可能投出整数枚举?
可能重复:
在int中将int转换为Enum
我得到了以下枚举:
public enum detallistaDocumentStatus {
/// <remarks/>
ORIGINAL,
/// <remarks/>
COPY,
/// <remarks/>
REEMPLAZA,
/// <remarks/>
DELETE,
}
然后我得到了类型为detallistaDocumentStatus的类属性:
public detallistaDocumentStatus documentStatus {
get {
return this.documentStatusField;
}
set {
this.documentStatusField = value;
}
}
在现实生活中,用户将按照它们声明的顺序向我们发送一个数字(1,2,3或4),以表示每个枚举值。
那么,是否有可能像这样施展?
det.documentStatus = (detallistaDocumentStatus)3;
如果不是,我怎样才能得到枚举值使用整数作为索引,我们使用了很多枚举,所以我们想做一些通用的和可重用的
是的,可以将Enum
为int
,反之亦然,因为每个Enum
实际上都是默认情况下由int
表示的。 您应该手动指定成员值。 默认情况下,它从0开始到N.
也可以将Enum
为string
,反之亦然。
public enum MyEnum
{
Value1 = 1,
Value2 = 2,
Value3 = 3
}
private static void Main(string[] args)
{
int enumAsInt = (int)MyEnum.Value2; //enumAsInt == 2
int myValueToCast = 3;
string myValueAsString = "Value1";
MyEnum myValueAsEnum = (MyEnum)myValueToCast; // Will be Value3
MyEnum myValueAsEnumFromString;
if (Enum.TryParse<MyEnum>(myValueAsString, out myValueAsEnumFromString))
{
// Put logic here
// myValueAsEnumFromString will be Value1
}
Console.ReadLine();
}
对的,这是可能的。 我使用以下ENUM
public enum AccountTypes
{
Proposed = 1,
Open = 2
}
然后当我打电话给它时,我使用它来获得值:
(int)AccountTypes.Open
它会返回我需要的int值,对于上面的值将是2。
从C#4.0规范:
1.10枚举
使用类型转换可以将枚举值转换为整数值,反之亦然。 例如
int i = (int)Color.Blue; // int i = 2;
Color c = (Color)2; // Color c = Color.Blue;
还有一点需要注意的是,即使该值没有映射到枚举声明中的某个名称,您也可以在枚举的基础类型范围内(默认为int)转换任何整型值。 从1.10枚举:
枚举类型可以采用的一组值不受其枚举成员的限制。 特别是,枚举的基础类型的任何值都可以转换为枚举类型,并且是该枚举类型的明确有效值。
所以,在你的例子中,enum也是允许的:
det.documentStatus = (detallistaDocumentStatus) 42;
即使没有值为42
枚举名称也是如此。