c# - 継承 - enum int string




列挙型に整数をキャストすることは可能ですか? (4)

C#4.0仕様から:

1.10 Enums

列挙型の値は型キャストを使用して整数値に変換でき、その逆も可能です。 例えば

int i = (int)Color.Blue;      // int i = 2;
Color c = (Color)2;               // Color c = Color.Blue;

もう1つ注意しなければならないのは、enum宣言の名前の1つにその値がマップされていなくても、enumの基になる型の範囲(デフォルトではint)に整数値をキャストすることが許可されていることです。 1.10 Enumから:

列挙型が取ることができる値のセットは列挙型メンバによって制限されません。 特に、列挙型の基礎となる型の任意の値は列挙型にキャストでき、その列挙型の別個の有効な値です。

したがって、あなたの例ではenumを使って次のことも許されます:

det.documentStatus = (detallistaDocumentStatus) 42;

42の値を持つ列挙型の名前はありません。

可能な重複:
intをC#でEnumにキャストする

私は次の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値を得ることができますか?私たちは多くの列挙型を使用しているので、一般的で再利用可能なもの


ENUMは整数に名前を付ける便利な方法です。 ENUMの値は、 intと同じ方法で加算、減算、比較することができます。


はい、可能です。 私は以下のENUMを使用します

public enum AccountTypes
{
  Proposed = 1,
  Open = 2
}

私がそれを呼び出すと、これを使って値を取得します:

(int)AccountTypes.Open

そして、それは私が上記の2のために必要なint値を返します。


det.documentStatus = (detallistaDocumentStatus)3;

上記はうまくいくはずです。 ここで覚えておかなければならないのは、特定の数値を列挙型のメンバーに割り当てると、このようなものが期待どおりに機能しない可能性があるということだけです。 また、enum値に明示的に番号を付けない場合、enumメンバーはゼロベースのインデックスから開始します。

したがって、上記のコードでは、宣言の順番に列挙体の4番目のメンバーを割り当てます。

指定された整数がその列挙体の有効な列挙値であるかどうかをチェックするには、 Enum.IsDefined





casting