R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

列挙型を使う

現在は、C# で書くことが多くなったのですが、列挙型は VB6 の頃から多用しています。

列挙型は、文字通り型として扱うことができます。

以下は、C# で列挙型を用いた場合のサンプルコードです。


public enum 年号大正, 昭和, 平成

public string Method(年号 value) {
  switch (value) {
    case 年号.大正: this.大正の人向けの処理(); break;
    case 年号.昭和: this.昭和の人向けの処理(); break;
    case 年号.平成: this.平成の人向けの処理(); break;
    default: this.明治以前の人向けの処理(); break;
  }
}


このように列挙型を用いることで、年号という型として扱うことができるようになります。

しかし、上記のように書いた場合、実は列挙型は内部的に int 型で処理が行われています。
各値は、列挙した順に 0 から 1 ずつ加算した値が割り当てられています。

上記のサンプルコードは、次のサンプルコードと同様です。


public string Method(int value) {
  switch (value) {
    case 0: this.大正の人向けの処理(); break;
    case 1: this.昭和の人向けの処理(); break;
    case 2: this.平成の人向けの処理(); break;
    default: this.明治以前の人向けの処理(); break;
  }
}


やはり列挙型を用いる方が、0~2 の意味がわかりやすく、入力ミスや認識ミスなどの間違いも少なくなりそうです。

ところで、

平成生まれ

の人は、僕を含めて わんくま同盟に何名程加盟しているのでしょうね。

投稿日時 : 2007年3月12日 11:27

Feedback

# re: 列挙型を使う 2007/03/12 11:38 とりこびと

そろそろ平成生まれの人が入社してきてもおかしくないんですよね。
え?わたしですか?(誰も聞いてない。)

this.昭和の人向けの処理();

を通ってしまいました。おっかしいなぁ?(おかしくない。)

# あ、列挙型について触れてないや。

# re: 列挙型を使う 2007/03/12 12:02 ぽぴ王子

> 平成生まれ
つ【Hirotowさん】

# re: 列挙型を使う 2007/03/12 12:16 Ognac

R・田中一郎さんて平成人なんですね。
来年くらいから平成社会人種が登場してくるんだな。
Ognacはシベリア抑留からの引揚者....の感じがする年代物です。
(10代の人で,SE/PG的に活発な人はうらやましい....)

ささやかな反論: この列挙体に明治がないです。
個人的には,元号はカルチャー経由のほうが,ソースに固定値を埋め込まない分,好みます。
CultureInfo cult_info = new CultureInfo("ja-JP") ;
cult_info.DateTimeFormat.Calendar = new JapaneseCalendar() ;
textBox1.Text = DateTime.Now.ToString("今日はg(元号)y年M月d日", cult_info) ;
元号の境目の日時の判断もしてくれるようです. 昭和64年1月7日と平成1年1月8日...

# re: 列挙型を使う 2007/03/12 13:10 アクア

だれかこの人を年齢詐称で訴えて下さい。w

# re: 列挙型を使う 2007/03/12 19:38 YAS

>R・田中一郎さんて平成人なんですね。

平成生まれで「R・田中一郎」は普通知らないと思います。(そうでもないかな?)
「おかゆライス」とか「粉砕バット」とか平成生まれは普通は誰もわかりません。

乱文失礼。

# re: 列挙型を使う 2007/03/12 20:18 koka

>だれかこの人を年齢詐称で訴えて下さい。w
いやまあ、3人目のR・田中一郎さんですからそのぐらいなんですよ。きっとw

# re: 列挙型を使う 2007/03/12 23:56 ぽぴ王子

究極超人あ~るの連載開始が1985年なので、そのときに転校してきたR・田中一郎くん(田中さんとの関係は不明)はまごう事なき昭和人ですよねー。
平成人おかゆライスや粉砕バットも現像バットも知らないですよねー。
鳩が出ますよーとか言いませんもんね。

わんくま同盟の王冠の人と言えば日本ではあたし一人ですとか言いませんしね(それはキミ)。

# re: 列挙型を使う 2007/03/13 10:03 R・田中一郎

とりこびと さん

>そろそろ平成生まれの人が入社してきてもおかしくないんですよね。

そして「XXさんは、昭和生まれだから頑固だよね~」などと言われる日も近いのです。
更に、昭和生まれだというだけで不当に定食のおかずを一品減らされるなどの差別が・・・

-----------------------------------------------------------------------
ぽぴ王子 さん

>つ【Hirotowさん】

知りませんでした。わかっ。

-----------------------------------------------------------------------
Ognac さん

>R・田中一郎さんて平成人なんですね。

マジレスするとそうです(嘘)

>Ognacはシベリア抑留からの引揚者....の感じがする年代物です。

そこまで年代物でなくても・・・w

>個人的には,元号はカルチャー経由のほうが,ソースに固定値を埋め込まない分,好みます。

そうですね。
この辺りは、ちょっと悩んだのですが、サンプルとして良いものが浮かばなかったのです。
最初は、性別にしようかな、と思ったのですが、2つというのも味気ない気がしたので。

-----------------------------------------------------------------------
アクア さん

>だれかこの人を年齢詐称で訴えて下さい。w

ちゃんと訂正したじゃまいか。

-----------------------------------------------------------------------
YAS さん

>「おかゆライス」とか「粉砕バット」とか平成生まれは普通は誰もわかりません。

これは失敗でしたね。
ハンドル名で年齢がバレるとは全然考えもしませんでした。

-----------------------------------------------------------------------
koka さん

>いやまあ、3人目のR・田中一郎さんですからそのぐらいなんですよ。きっとw

嫌だなぁ。3人目は、田中三郎ですよ。

http://blogs.wankuma.com/aqua/archive/2007/03/08/65613.aspx

-----------------------------------------------------------------------
王冠の人

>鳩が出ますよーとか言いませんもんね。

これは言うんじゃないかな。

# 列挙型を使う(その2) 2007/03/13 11:21 R.Tanaka.Ichiro's Blog

列挙型を使う(その2)

# 列挙型を使う(その2) 2007/03/13 11:22 R.Tanaka.Ichiro's Blog

列挙型を使う(その2)

# re: 列挙型を使う 2007/03/13 11:30 NAL-6295

個人的には

明治以前の人向けの処理葉、メソッドの先頭で

System.Enum.IsDefinedで判定してしまいたいところです。

# re: 列挙型を使う 2007/03/13 11:41 じゃんぬねっと

いちおう、ギリギリ昭和生まれです。

# re: 列挙型を使う 2007/03/14 11:05 R・田中一郎

NAL-6295 さん

>System.Enum.IsDefinedで判定してしまいたいところです。

確かに、サンプルでは、列挙型に明治以前の元号が入っていないので、System.Enum.IsDefined を使う方が良いですね。

---------------------------------------------------
じゃんぬねっと さん

>いちおう、ギリギリ昭和生まれです。

一緒ですね。
ギリギリも含めて(嘘)

# 列挙型を使う(その4) 2007/03/15 13:45 R.Tanaka.Ichiro's Blog

列挙型を使う(その4)

# 列挙型を使う(その4) 2007/03/15 13:47 R.Tanaka.Ichiro's Blog

列挙型を使う(その4)

# 列挙型を使う(その5) 2007/03/16 11:33 R.Tanaka.Ichiro's Blog

列挙型を使う(その5)

# 列挙型を使う(その6) 2007/03/19 10:02 R.Tanaka.Ichiro's Blog

列挙型を使う(その6)

# 列挙型を使う(その6) 2007/03/19 10:05 R.Tanaka.Ichiro's Blog

列挙型を使う(その6)

タイトル  
名前  
Url
コメント