是否有可能投出整数枚举?

可能重复:
在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;

如果不是,我怎样才能得到枚举值使用整数作为索引,我们使用了很多枚举,所以我们想做一些通用的和可重用的


是的,可以将Enumint ,反之亦然,因为每个Enum实际上都是默认情况下由int表示的。 您应该手动指定成员值。 默认情况下,它从0开始到N.

也可以将Enumstring ,反之亦然。

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枚举名称也是如此。

链接地址: http://www.djcxy.com/p/22511.html

上一篇: Is it possible to cast integer to enum?

下一篇: C# int to enum conversion