
こんにちは、いつも拝見させて頂いております。
今回は、VB.NETのEnumについて教えて頂ければと思い、投稿しました。
VB.NETでEnum定義をしているのですが、クラス内のEnumとして定義
しているのですが、そのクラスのインスタンスを生成しなくても
クラス内のEnum定義が参照できます。
クラスのインスタンスを生成していないのであれば、そのクラス内に
あるEnum定義も参照できないのではないかと考えていたのですが、
参照できたので、なぜなのかがわかりません。
自分なりに色々と調べたのですが、EnumがSystem.Enumを継承している
というのはわかりましたが、それがなぜ、クラスのインスタンスを生成
しないで、クラス内のEnum定義が参照できることになるのかがわかりません。
言語は、VB.NET2005です。
一応、ここの質問一覧も検索してみたのですが、該当しそうなもの
が見当たらなかったので、ここに投稿させてもらいました。
お忙しいところ、申し訳ありませんが、ご教授ください。
No.3
- 回答日時:
クラスの中のクラスは,外側のクラスに束縛されません。
ここはJavaと異なるので,Java経験がある場合は注意が必要です。
# Javaでは外側のクラスに束縛されます。
つまり,
Public Class OuterClass
' コード
Public Class InnerClass
' コード
End Class
' コード
End Class
とあった場合に,
Dim obj As New OuterClass.InnerClass
のように,InnerClassに自由にアクセス可能です。
Enumも一種のクラスですから,上記と同様の理由で,外側のクラスのインスタンス化なしに内側のEnumにアクセスできます。
なるほど、C#でやっていたときは、インスタンスを生成したあとで
そのクラス内のEnumを参照するようにしていたので、クラスインスタンス
を生成せずに、Enumを参照できるのがなぜかわかりませんでした。
ご説明戴いた内容でなんとなくですが、理解できました。
ありがとうございました。
No.2
- 回答日時:
回答ありがとうございます。
教えて戴いたページは、私も検索して見つけましたが、VB.NETと
いうよりは、VB6.0の情報だと思ったので、VB.NETとしての
記述のあるページを探しています。
No.1
- 回答日時:
定数項の文字列による置き換えだからではないかと思います
Enum ... End Enum で定義された部分がご質問だとすると
Enumステートメントを調べたほうが良いでしょう
ご質問の内容が
Class oTest
Enum Test
First
Secound
Third
End Enum
Public objEnum1 as Test
Private objEnum2 as Test
end Class
と定義した場合
oTest.Test.First はそのままアクセス可能です
objEnum1やobjEnum2などは oTestのインスタンスが無いとアクセスできません
また objEnum2はPrivateなので oTestクラス内でのみ参照可能です
早速の回答ありがとうございます。
Enumステートメントでネットを検索したら、VBの記述として
Enumのスコープの説明がありましたので、理解できました。
ただ、VB.NETとしてのそういった記述があれば、さらにいいなと
思いますので、もう少し調べてみます。
ありがとうございました。
もし、VB.NETのそういった記述している箇所をご存知でしたら
教えていただけると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- Visual Basic(VBA) VBプロジェクトでのフォルダ構成について 1 2023/07/22 03:49
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- C言語・C++・C# C# 継承の問題で programに示された拡張をすべて含んだ上で,クラス Mammal に,そのオ 1 2022/07/22 09:48
- その他(悩み相談・人生相談) 将来伸びる高校生って? 1 2022/05/14 14:39
- 成人式 成人式の同窓会が行われることが決定したのですが、中学生で私立受験した友達が僕が卒業した市立中学校の同 3 2022/08/21 15:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA チェックボックスをオーバ...
-
既定のコンストラクタがない?
-
FriendとPublicの違い。。。
-
C++ protectedにアクセス不可
-
MFCアプリのコマンドラインでパ...
-
C#でのjsonの扱い方を教えてく...
-
関数の呼び出し元の検索
-
クラスの扱いについて
-
オブジェクト指向 集約の実装...
-
DLLの作り方および使い方について
-
MFCのCListCtrlでスクロールを検出
-
ダイアログ表示時にチェックボ...
-
C++でJavaのStaticイニシャライ...
-
エディットコントロールでEnter...
-
(UWSC) 「#32770」の意味わかり...
-
MFC モードレスDlgについて
-
リストコントロールの使用法に...
-
MessageBoxを継承したい
-
【MFC】ユーザインタフェースス...
-
VB6で作成したDLLをVC6で使用す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
イベントにAddHandlerされてい...
-
ダイアログ表示時にチェックボ...
-
エディットコントロールでEnter...
-
(UWSC) 「#32770」の意味わかり...
-
C++ protectedにアクセス不可
-
クラスのアドレスを引数として...
-
エディットコントロールのイベ...
-
【ASP.NET】 独自で作成したク...
-
MFCのドラッグ&ドロップについて
-
オーバーライド関数の呼び出し...
-
C++/CLIからC++の呼び出しで例外
-
ボタンのオーナードローについて
-
C++で継承元のクラスの代入演算...
-
MFCアプリのコマンドラインでパ...
-
DLLからEXEのクラスを呼び出す...
-
MFCのCListCtrlでスクロールを検出
-
オブジェクト指向 集約の実装...
-
ダイアログクラスのコントロー...
おすすめ情報