Paken.NET

筑波大学附属駒場中・高等学校 パーソナルコンピュータ研究部
<< 2008年02月 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 >>
<< 市販ノートPC超個人的考察 | トップ | ~いろいろなクラスを見てみよう~ 第02回 "System.Convert" >>

~いろいろなクラスを見てみよう~ 第01回 "System.Enum"

2007年10月10日 水曜日 | Paken > isa-inguz |

暇なのとネタが無いのとで、誰も.Neterなんて周りに誰一人いないにも関わらず、.NetFrameworkのクラスを淡々と解説するという連載企画。

”どうせJavaのパクリ”だそうですから、蛇腹の人々にも少しは役立つかもしれませんが、まあきっとそうでもないでしょう。

CLRは良いですよ?Javaのパクリだとしても、当然後発としてのメリットと言うか、ずっと高機能です。クロスプラットフォームの面でも次第に劣らなくなってきてますし。

話が脱線しましたが、この連載の内容としては、とりあえず基本的なクラスから、普段使わないようなマニアックなクラスや、重要だけど知名度が低いクラスなどを解説していこうかと。

一般の方が見に来ても恥ずかしくない内容にしたいですね。

では早速の第一回です。

今回扱うのは、System.Enum。

最初からクラスじゃなくて構造体じゃないかっ!というツッコミはまあ置いといて下さい。反省してます。

この構造体は名前の通り、enumキーワードで宣言される列挙体全ての、基本クラスとなるものです。

列挙体については解説の必要はないと思われますが、分らない人は適当な本を読んで調べてください。

さて、そしてこのSystem.Enum構造体について、特に今回扱いたいのは、意外と知られていなかったりする、幾つかのスタティックメソッドについてです。

とりあえずはまあ、列挙してみましょう。

 

  • Format
  • GetName
  • GetNames
  • GetUnderlyingType
  • GetValues
  • IsDefined
  • Parse
  • ToObject

 

これらはどれも重要なメソッドばかりなのですが、全部を解説していては要点が分からずに疲れますし、何よりMSDNライブラリでも見ればいいじゃないかということになってしまいます。

というわけで、自分のプログラミング経験上で特に利用価値が高いと思われる、Parseについて解説いたします。

これは object Parse(Type enumType, string value) と定義されており、文字列(value)を、列挙体(enumType)に定義されている対応する列挙子に変換して返すというものです。

まあ、intやboolにあるようなただのParseです。

主な使用用途としましては、アプリケーションの設定ファイルなどに文字列で記述された列挙子を、列挙子として読み込むときなどがあります。

簡単なコード例を示してみましょう。

 

using System;

class EnumTest
{

   public static void Main()
   {
       string[] Input = new string[2];
       Input[] = "A";
       Input[1] = "B";
       Exnample ex1, ex2;
       ex1 = (Exnample)Enum.Parse(typeof(Exnample), Input[]);
       ex2 = (Exnample)Enum.Parse(typeof(Exnample), Input[1]);
       Console.WriteLine(string.Format("ex1 = {0}\nex2 = {1}", ex1.ToString(), ex2.ToString()));
   }
   enum Exnample { A, B }
}

 

なんとも単純なコードですね。しかし、案外このメソッドの存在に気づかずに、わざわざ

 

if(Input[].Equals("A")) { ex1 = Exnample.A; }

 

なんて書いてしまっているケースをいくつも見たことがあります。

自分も最初はそんなことをしていました。

もちろんそれではいけないという決まりはないのですが、例えばリファクタリングの過程で列挙子の名前を変えなくてはならなくなったときなどに"A"などというリテラルが存在すると混乱するものです。

せっかくこんなメソッドが用意してあるのですから、是非使ってみるようにしてください。

え?こんなの常識だって?

まあそうかもしれませんね。でもそのうち結構マニアックなクラスも扱いますので、こんなの簡単という方は、それを楽しみにしていてくだされば光栄です。

では、今回はこんなところで。

さようならー。

paken | コメント (0) | トラックバック (0)

コメント









 

トラックバック

トラックバックURL :