列挙型のメンバー一覧を取得する

構文

[enum]::GetNames([TypeName])

解説

 列挙型というのは、名前つきの値をいくつかもっている型です。型によって、値を1つだけ選択できるものと複数選択できるものがあります。

列挙型の例

 列挙型が使われる例として、String(文字列)型のSplitメソッドがあります。このメソッドは、文字列を分割して配列にするものです。普通に実行すると次の通りになります。

PS U:\PS> "a//b".Split("/")
a

b
PS U:\PS>

 StringSplitOptions型の値であるNoneを指定すると、何も指定しなかったのと同じ結果になります。

PS U:\PS> "a//b".Split("/",[StringSplitOptions]::None)
a

b
PS U:\PS>

 一方、StringSplitOptions型の値であるRemoveEmptyEntriesを指定すると、途中に含まれていた長さ0の文字列が出力されなくなります。

PS U:\PS> "a//b".Split("/",[StringSplitOptions]::RemoveEmptyEntries)
a
b
PS U:\PS>

列挙型かどうか判定

 StringSplitOptions型が列挙型であることを前提に話を進めてしまいましたが、列挙型かどうかは次の方法で調べることができます。

PS U:\PS> [StringSplitOptions]

IsPublic IsSerial Name               BaseType
-------- -------- ----               --------
True     True     StringSplitOptions System.Enum


PS U:\PS>

 ここでBaseTypeがSystem.Enumになっていれば列挙型です。System.Enumと書くと長いので、たいていはenumと表記します。

値の一覧

 列挙型の値の一覧は、以下の方法で取得できます。

[enum]::GetNames([取得したい型の名前])

 前述のStringSplitOptions型の値を取得します。

PS U:\PS> [enum]::GetNames([StringSplitOptions])
None
RemoveEmptyEntries
PS U:\PS>

 実は、StringSplitOptions型は、先ほど出てきたNoneとRemoveEmptyEntriesしか存在しないことが分かりました。

その他

 StringSplitOptions型は.NET Frameworkで用意されている型なので、MSDNにメンバー一覧が掲載されています。ここで紹介した方法は、MSDNに掲載されていない列挙型のメンバーを参照したいときや、ネットで検索する手間を省きたい場合に使用できます。

※MSDNには「列挙型」ではなく「列挙体」と書かれていますが、同じ意味です。プログラミング言語によって呼び方が異なります。

inserted by FC2 system