2011-07-23 17 views
5

列挙型はC#でint型として格納されますか?C#で列挙型がint型として格納されていますか?

下記の列挙型は0,1,2?

もしそうでない場合、最も簡単な方法は何ですか?

public enum ColumnType 
{ 
    INT,STRING,OBJECT 
} 
+0

「最軽量」、消費? –

+0

マイナーノート;名前を大文字にすることは珍しいことです。無効ではない...ちょっと珍しい。 –

答えて

5

From the MSDN

列挙要素のデフォルトの基本となる型はintです。デフォルトでは

は、最初の列挙子は値0を持ち、かつ連続する各列挙子の値が

だからあなたの仮定が正しい1増加されます。 Enumintとして保存され、例は0,1,2と表示されます。ただし、これに頼るべきではありません。常には、誰かがデフォルトを上書きする場合にのみ割り当てられた名前で参照してください。はいデフォルトで

5

はい、enumはデフォルトでintとして記憶されている。、hereが示されているように。

また、例えば、基になる型を指定することができます。:

enum Foo : short 
{ 
    Bar, 
    Baz 
} 

それは通常は必要ありませんが。

2

http://msdn.microsoft.com/en-us/library/sbbt4032(v=vs.80).aspx

enumキーワードを列挙、列挙子リストと呼ばれる名前付き定数の集合からなる特殊タイプ を宣言するために使用されます。 すべての列挙型は基になる型を持ちます。 の整数型(char以外)でもかまいません。 列挙型要素のデフォルトの基本型はintです。デフォルトでは、最初の列挙は 値0を有し、各連続列挙子の値はenum ため1.

2

デフォルト下地の種類によって増加intであるが、異なるタイプが明示的に使用することができるされています。たとえば、byteを使用することができます。

enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; 

詳細はhttp://msdn.microsoft.com/en-us/library/sbbt4032.aspxを参照してください。

1

すべての列挙型には基本型があります。これはchar以外の整数型でもかまいません。 はい、あなたのenumはデフォルトで0,1,2として表現され、enumを定義する最も軽い方法です

開始値を要件として定義し、メンバーだけでなく

1

基礎となるタイプについてのポイントは、すでによく覆われているので、私は別のコンテキスト追加します:IL /ランタイムレベルでは

を、列挙型のインスタンスは、存在しません。彼らは唯一の存在:

:コンパイラ Bに:ランタイムに箱入りの値 cと:メタデータ(パラメータ/フィールド/変数宣言)

内の他のすべての回で、彼らは純粋です整数型の値(最も一般的にはint)コンパイラは静的解析、過負荷解決などのためにenum変数などを使用しますが、それが発行するオペコードは定数/リテラル​​の整数値の場合と同じです。すなわち、

SomeEnum foo = SomeEnum.WithValueOne; 
int bar = 1; 

は、おそらく可変型以外は同じILを持つことになります。ボックス操作を放出する場合、それは面白いだけの時間がある

、または.ToString(のようなコール)など

ので:限り、あなたはそれらをボックスしていないとして(/ objectフィールドに保存等)を使用している場合を除いて、(実行時に)列挙型または整数型の間に有意差はありません(.ToString()などを使用しない限り)

関連する問題