こんにちは、いつも拝見させて頂いております。
今回は、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も見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
ちょっと先の未来クイズ第5問
日本漢字能力検定協会が主催し、12月12日に発表される、2024年の「今年の漢字」に選ばれる漢字一文字は何でしょう?
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既定のコンストラクタがない?
-
FriendとPublicの違い。。。
-
イベントにAddHandlerされてい...
-
C++のclassを、ウインドウプロ...
-
ダイアログ表示時にチェックボ...
-
クラスのアドレスを引数として...
-
エディットコントロールでEnter...
-
関数重複の問題
-
個々の関数について継承してい...
-
MFCアプリのコマンドラインでパ...
-
VC++ Express m_hWnd
-
オーバーライド関数の呼び出し...
-
C++ protectedにアクセス不可
-
VB.NETでのEnumの使用について
-
【ASP.NET】 独自で作成したク...
-
[MFC] CWnd::MessageBoxの警告...
-
MFCのCListCtrlでスクロールを検出
-
継承を重ねた場合のコストはど...
-
C#で通常のbuttonコントロール...
-
(UWSC) 「#32770」の意味わかり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
(UWSC) 「#32770」の意味わかり...
-
C++ protectedにアクセス不可
-
ダイアログ表示時にチェックボ...
-
エディットコントロールでEnter...
-
【ASP.NET】 独自で作成したク...
-
このコンパイルエラーの意味に...
-
ダイアログクラスのコントロー...
-
DataGridViewのセルに斜線を引...
-
C++で継承元のクラスの代入演算...
-
MFCのCListCtrlでスクロールを検出
-
イベントにAddHandlerされてい...
-
MFCのドラッグ&ドロップについて
-
MFCアプリのコマンドラインでパ...
-
DebugクラスとTraceクラスの違い
-
[MFC] CWnd::MessageBoxの警告...
-
個々の関数について継承してい...
-
クラスのアドレスを引数として...
-
関数の呼び出し元の検索
おすすめ情報