連載改訂版 C#入門第16章 列挙型の活用 |
![]() |
16-12 列挙型のすべての名前を得る
System.Enumクラスには列挙型のすべての名前を得るメソッドもある。List 16-12はそれを用いた例である。
|
|
| List 16-12 |
これを実行するとFig.16-12のようになる。
![]() |
| Fig.16-12 |
17行目のGetNamesメソッドは、引数の型の列挙型に含まれるすべての名前を、文字列の配列として返す。これを調べることで、列挙型に含まれるすべての名前を容易にプログラム中で知ることができる。
16-13 列挙型のすべての数値を得る
今度は反対に、名前ではなく、数値の一覧を取得する方法を説明する。List 16-13がそれを記述した例である。
|
|
| List 16-13 |
これを実行するとFig.16-13のようになる。
![]() |
| Fig.16-13 |
GetValuesメソッドは、ある列挙型に含まれる数値の一覧表を配列として返す機能を持つ。引数は、GetNamesメソッドと同じである。戻り値はSystem.Array型だが、これはすべての配列のスーパークラスに当たるもので、どんな配列を渡すのにも使用できるデータ型である。列挙型は、どんな数値型で表現するかプログラマーが指定できるので、このような汎用的なデータ型で戻ってくるのである。
16-14 文字列から列挙型の値へ
外部との入出力に列挙型の名前を使う場合、入力された文字列を列挙型の値に変換しなければならない。そのために、System.EnumクラスにはParseメソッドが存在する。このメソッドは、Taishoなどの文字列を入力して、その文字列を解析し、それが指定列挙型のTaishoであることを突き止めて、その値を返す。List 16-14はそのメソッドを使用したサンプル・ソースである。
|
|
| List 16-14 |
これを実行するとFig.16-14のようになる。
![]() |
| Fig.16-14 |
18行目が実際にParseメソッドを使用した例である。このメソッドの最初の引数は、列挙型の型である。2番目の引数は、変換する文字列を指定する。このメソッドから戻ってくる値は、汎用的なobject型なので、「(Era)」のようにキャストしてやる必要がある。19行目の出力結果で、正しい値になっていることが分かると思うが、本当にEra型の値であることを示すために、20行目も追加してみた。確かに、ConsoleApplication15.Era型であることが分かると思う。
16-15 文字列への変換
列挙型の値から対応する名前を得る方法はすでに説明したが、これとは少し違う方法もある。List 16-15は、それを使用した例である。
|
|
| List 16-15 |
これを実行するとFig.16-15のようになる。
![]() |
| Fig.16-15 |
列挙型の値にはToStringメソッドを利用できる。ToStringメソッドはすべてのクラスが持つメソッドなのだが、列挙型では、値に対応する名前を返すように実装されている。そのことが、17〜19行目の結果から分かると思う。しかし、列挙型のToStringメソッドはそれで終わりではない。引数にフォーマット文字列を指定して、複数のフォーマットで文字列に変換することができる。20〜21行目のように「G」を指定した場合は名前を返す。22〜23行目のようにXの場合は16進数の文字列として返す。24〜25行目のようにDの場合は10進数の文字列として返す。
このほか、ToStringメソッドには、フォーマット機能を持つインターフェイスを指定して変換する機能などもある。使いこなせば、列挙型はより強力なツールになるだろう。![]()
『新プログラミング環境 C#がわかる+使える』本記事は、(株)技術評論社が発行する書籍『新プログラミング環境 C#がわかる+使える』から許可を得て一部分を転載したものです。 【本連載と書籍の関係について 】 この書籍は、本フォーラムで連載した「C#入門」を大幅に加筆修正し、発行されたものです。連載時はベータ版のVS.NETをベースとしていましたが、書籍ではVS.NET製品版を使ってプログラムの検証などが実施されています。技術評論社、および著者である川俣晶氏のご好意により、書籍の内容を本フォーラムの連載記事として掲載させていただけることになりました。 →技術評論社の解説ページ ご注文はこちらから |
| INDEX | ||
| 改訂版 C#入門 | ||
| 第16章 列挙型の活用 | ||
| 16-1 列挙型とは何か? | ||
| 16-4 最後の要素に付くカンマ | ||
| 16-8 名前に任意の数値を与える | ||
| 16-12 列挙型のすべての名前を得る | ||
| 「連載:改訂版 C#入門」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -







