- ベストアンサー
[VB.NET] インスタンス生成とインテリセンス
- VB.NETの勉強をしつつ業務開発をしております。現在、作成したクラスをインスタンス化した際、インテリセンスが表示されず、困っております。
- メソッド内で生成したインスタンスからは、インテリセンスが表示されるのですが、クラス直下で生成したインスタンスでは、インテリセンスが表示されないのです。
- インテリセンスは表示されなくても、エラーにはなりません。自分で打ち込めば動作するのですが、共有利用したいので、インテリセンスの説明は表示させたいのです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
VBのバージョンが書かれていないようですが、試された状況から推測すると VB2010 かと思うのですが、VB.NET のように書かれると VB.NET 2002 VB.NET 2003 を指す 事になり変に誤解を招きます。 VB2005 以降は、製品名に“.NET”の名を冠さないようになっています。 因みに、現在[.NET対応のバージョン]は下記のようなものがあります。 VB10: Visual Basic 2010 / Visual Studio 2010 VB9 : Visual Basic 2008 / Visual Studio 2008 VB8 : Visual Basic 2005 / Visual Studio 2005 VB7.1:Visual Basic .NET 2003 / Visual Studio .NET 2003 VB7 : Visual Basic .NET(2002)/ Visual Studio .NET(2002) 本題ですが、結論から言いますと変数の型を宣言されていないからインテリセンス機能が働かない。 Option Strict Off の状態で使用されているのでしょうか? それなら On で使用されるようお勧めします。(勉強のためにもなるし) 原因は、Dim MyCls = New MyName.Class1 ←○MyNameのインテリセンスでClass1が表示 では、MyCls の変数の型が宣言されていません。 Private MyCls As New MyName.Class1 のように宣言し直して見て下さい。 >Dim MyCls2 = New MyName.Class1 こちらはローカルで宣言されていますので、VB2008 からだったかVB2010からだったかチョット 確認しておりませんが、型が書いていないと自動で型を認識するようです。 因みに下記を試して見て下さい。 Option Strict On の状態で ローカルで Dim i = 0 'と宣言して見て下さい。 又、Private で Private i = 0 'と宣言して見て下さい。 又、ループ用変数等は宣言しなくても使用できるようになったりしていますが、基本は踏まえて おいて下さい。
お礼
すみません。VBのバージョンは、Visual Basic 2008 ExpressEditionです。 VB.NETって書かないんですね。詳しく教えてくださり有難うございます!すごく勉強になりました。 ご指示のとおり、Option Strict Onでやってみました。確かにエラーになりました。 インテリセンスは出なかったものの、実装は出来ていたので、型宣言だったとは気づきませんでした。 Private MyCls As New MyName.Class1 としてみましたら、インテリセンスが出てくるようになりました。 お恥ずかしながら、Option Strict Onとしたら、他の箇所でも多数の型宣言エラーが出たので、 これを機に、プログラムを全体的に見直しいたします。 とても丁寧に教えていただき、本当に有難うございました。初心者の私でも、とても良く理解できました。感謝です! 本当に有難うございました。