2006.09.16

Enum メンバ の値を文字列にしたい場合

間違えやすいので、書いておきます。

以下のようなEnum構造体を定義します。

  Enum Colors
    Red = 1
    Green
    Blue
    Yellow
  End Enum

以下のようなコードを書いた場合結果が異なるということは
ご存知でしょうか?
  1.Colors.Red.ToString
  2.CType(Colors.Red, String)

どちらも、何かをString型にしてくれるという点では、
同じように見えますが、実際には全く異なります。

以下のような結果になります。
  1.Colors.Red.ToString    → "Red"
  2.CType(Colors.Red, String) → "1"

1.ToStringは、Object を表す Stringを返します。
  Enumメンバは、それぞれEnumのインスタンスにあたるので、
  それを表す文字列が戻ってきます。
2.CTypeは、任意の式を、指定されたデータ型に明示的に変換し、
  その結果を返します。
  インスタンスをString型に変換して、値を返しています。

ちょっとややこしいですが、違いを覚えておきましょう。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
ooya