我得到了以下枚举:
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;
如果没有,我如何使用整数作为索引来获取枚举值,我们使用了很多枚举,所以我们想要做一些通用的和可重用的
答案 0 :(得分:47)
是的,可以将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();
}
答案 1 :(得分:13)
是的,这是可能的。我使用以下ENUM
public enum AccountTypes
{
Proposed = 1,
Open = 2
}
然后当我调用它时,我用它来获取值:
(int)AccountTypes.Open
它将返回我需要的int值,上面的值为2。
答案 2 :(得分:12)
来自C#4.0规范:
1.10枚举
使用可以将枚举值转换为整数值,反之亦然 类型演员。例如
int i = (int)Color.Blue; // int i = 2; Color c = (Color)2; // Color c = Color.Blue;
另外需要注意的是,您可以在枚举的基础类型范围内(默认情况下为int)转换任何整数值,即使该值未映射到其中的某个名称也是如此。枚举声明。从1.10 Enums:
枚举类型可以采用的值集不受其限制 枚举成员。特别是,基础类型的任何值 枚举可以转换为枚举类型,并且是一个独特的有效值 枚举类型。
因此,您的示例中的枚举也允许以下内容:
det.documentStatus = (detallistaDocumentStatus) 42;
即使没有值为42
的枚举名称。
答案 3 :(得分:1)
det.documentStatus = (detallistaDocumentStatus)3;
以上应该可以正常工作。这里唯一要记住的是,如果您要为枚举成员分配特定的数字,那么这样的事情可能无法按预期工作。此外,如果您没有明确地为枚举值编号,那么枚举成员从基于零的索引开始。
因此上面的代码将按照声明的顺序分配枚举的第4个成员。
要检查给定整数是否是该枚举的有效枚举值,请使用Enum.IsDefined
答案 4 :(得分:1)
如果为枚举成员提供显式整数值,请执行以下操作:
public enum Foo
{
Five=5
, Six
, Seven
, Eight
}
您可以将它们转换为int
以获取隐含值。
var bar = (int)Foo.Six: /// bar == 6
如果您没有为至少第一个显式定义值,则将其转换为int将为您提供它在声明中出现的顺序。
答案 5 :(得分:-1)
ENUM只是命名整数的便捷方式。可以添加,减去ENUM的值,并以int
的相同方式进行比较。