dポイントプレゼントキャンペーン実施中!

VB初心者です。
EnumやTypeについてよくわかりません。
何に使用するのでしょうか?

また両者の違いについてもよくわかりません。
どなたかご教授ください。

ちなみにEnumは構造体でTypeは列挙型という認識はあっていますか?

A 回答 (2件)

■列挙型の用途


例)信号の色を返す関数
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」を入れるんだなってことが容易に分かりますよね。
という感じに使います。
    • good
    • 1

>Enumは構造体でTypeは列挙型という認識はあっていますか?


逆で
Enumは列挙型でTypeは構造体
という認識だと思います。

type は、いわゆるユーザー定義型で、既知のデータ型を組み合わせた複合型を宣言します。(そういう型を作る)
Enum は、ある(分類上の?)組の定数を作成することに相当します。
単なる1つの定数と違うのは、その型で組があることです。
その組であらかじめEnum ステートメントで宣言した以外のものは使えないのでそのような型を引数などに使うことは意味があります。(チェックができる)
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!