.NET TIPS 列挙体の値を列挙するには?デジタルアドバンテージ2003/04/04 |
|
|
列挙体(列挙型)は一定の数の定数(定数のグループ)を定義するためのものだ。例えば、.NET Frameworkのクラス・ライブラリには、週の7つの曜日を定義したDayOfWeek列挙体(System名前空間)が用意されている。
列挙体で定義されたそれぞれの定数の値を取得するには、Enumクラス(System名前空間)のGetValuesメソッドを使用する。このメソッドはstaticなメソッドであるため、インスタンスを作成しなくても、次のようにして呼び出すことができる。
Array arr = Enum.GetValues(typeof(DayOfWeek));
Enum.GetValuesメソッドは、列挙体で定義されたすべての定数を含んだArrayクラスのオブジェクトを返す。パラメータには対象となる列挙体の型を表すTypeクラスのオブジェクトを指定する。typeofはTypeオブジェクトを取得するためのC#の演算子だ(Visual Basic .NETではGetType式を使用する)。
上記のコードは、あらかじめ次のように型付きの配列にキャストしておいた方が、各要素を扱いやすいかもしれない。
DayOfWeek[] dow = (DayOfWeek[])Enum.GetValues(typeof(DayOfWeek));
次のサンプル・プログラムは、DayOfWeek列挙体に含まれている定数の値(列挙体の定数はデフォルトではint型)と、その名前を列挙する。
|
|
DayOfWeek列挙体の値を列挙するC#のサンプル・プログラム(enumvalues.cs) | |
レンダリング・モードの列挙
.NET Frameworkのクラス・ライブラリでは、Windowsアプリケーションでテキストを描画する場合の品質を定義したTextRenderingHint列挙体(System.Drawing.Text名前空間)が用意されている。次に、Enum.GetValuesメソッドでこの列挙体の値を列挙し、各品質でテキストを描画するプログラムを作成してみよう。
まずVisual Studio .NETを起動し、新しいプロジェクトとしてC#のWindowsアプリケーションを開く。これにより次のようなフォームが作成される。
Visual Studio .NETで作成されるフォーム |
次にコードを表示し、次のコードを追加する。
|
|
コードを開いて追加するOnPaintメソッド | |
このOnPaintメソッドは描画が必要な場合に呼び出される。ここではまずFontオブジェクトを作成し、テキストのレンダリング・モードを設定してから、作成したFontオブジェクトで文字列を描画する。なお、プログラムの先頭には「using System.Drawing.Text;」を追加する必要がある。 |
プログラムを実行すると次のような画面が表示される。
プログラムの実行結果 |
TextRenderingHint列挙体で定義された各品質で、その値の名前を描画している。 |
Single〜の2つの行以外はアンチエイリアシングされているのが分かるだろうか。
カテゴリ:クラス・ライブラリ 処理対象:列挙体 使用ライブラリ:Enumクラス(System名前空間) 使用ライブラリ:DayOfWeek列挙体(System名前空間) 使用ライブラリ:TextRenderingHint列挙体(System.Drawing.Text名前空間) 使用キーワード:typeof演算子 関連TIPS:列挙体の名前を列挙するには? |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|