- 締切済み
EnumとType
VB初心者です。 EnumやTypeについてよくわかりません。 何に使用するのでしょうか? また両者の違いについてもよくわかりません。 どなたかご教授ください。 ちなみにEnumは構造体でTypeは列挙型という認識はあっていますか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- pen_pen_pen
- ベストアンサー率65% (52/79)
■列挙型の用途 例)信号の色を返す関数 A. 列挙を使わない場合 Function 信号(col As Integer) As Color Select Case col Case 1 信号 = vbBlue Case 2 信号 = vbYellow Case 3 信号 = vbRed Case Else 信号 = vbBlack End Select End Function B. 列挙を使った場合 Enum SignalMode sigBlue sigYellow sigRed End Enum Function 信号(col As SignalMode) As Color Select Case col Case sigBlue 信号 = vbBlue Case sigYellow 信号 = vbYellow Case sigRed 信号 = vbRed Case Else 信号 = vbBlack End Select End Function この場合 列挙を使わない方は引数が「整数」なので、 関数を使用する人が「青信号の色を取りたい」と思った時に一体引数にどんな数値を入れたらよいか分かりません。 『青信号の時は引数に「1」を渡すこと』 というのは、この関数を作った私にしかワカラナイからです。(ソースを見れば分かりますが。) 整数はいくらでもありますから、渡すべき整数を突き止めるのは困難でしょう。 一方列挙型を使う場合、 VBのエディタで 「信号(」 と打ち込んだ時点で sigBlue sigYellow sigRed のどれかを引数に入れるように表示されます。 分かりやすい定数名さえつけておけば、青信号ならば「sigBlue」を入れるんだなってことが容易に分かりますよね。 という感じに使います。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>Enumは構造体でTypeは列挙型という認識はあっていますか? 逆で Enumは列挙型でTypeは構造体 という認識だと思います。 type は、いわゆるユーザー定義型で、既知のデータ型を組み合わせた複合型を宣言します。(そういう型を作る) Enum は、ある(分類上の?)組の定数を作成することに相当します。 単なる1つの定数と違うのは、その型で組があることです。 その組であらかじめEnum ステートメントで宣言した以外のものは使えないのでそのような型を引数などに使うことは意味があります。(チェックができる)