• ベストアンサー

変数の参照でエラーが出てしまいます。(VB.NET)

プロシージャの外に記した変数があるのですが、 (Dim IniFileName as string = "myapp.ini")など Public Shared Sub 内でIniFileNameを使おうとすると --------- クラスの明示的なインスタンスを指定しないで、共有メソッドまたは共有メンバ初期化子内からクラスのインスタンス メンバへ参照することはできません。 --------- というエラーが出てしまいます。 クラスの明示的なインスタンスを指定したいのですが、 意味がさっぱり分かりません。 class.IniFileNameとかForm1.IniFileNameなどとしてみたのですが違うようです。 一つ正解をご教示頂けたらと思います。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • herencia
  • ベストアンサー率56% (120/211)
回答No.3

参考URLの「インスタンスを作成せずに呼び出せるメソッド 」が参考になるかもしれません。 Sharedをつけると、インスタンス生成しなくても呼び出せるメソッドになるので、インスタンスに属するメンバ変数などにアクセスできません。 Sharedメソッドから参照したいのであれば、 そのSharedメソッドと同じクラス内でShared変数とするか、Sharedメソッドの引数にするかなどで対応できます。

参考URL:
http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbnet2_05/vbnet2_05_02.html

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

つまり、shared(クラス)メソッドから、インスタンスのメンバをインスタンスを作成もしてないのにアクセスしようとしているというようなことですかね? sharedなプロシジャー(メソッド)が呼び出されるとき、アクセスしようとしているインスタンスがあるとは限りません。(引数として渡せばべつだけど) 何にアクセスしようとしているかよく考えるべきだと思います。 同じくsharedな変数(クラスの中で共有される)ならアクセスできると思いますが、それをsharedなメンバにするかインスタンスのメンバにするかは自分で決めねばなりません。 多分、共有変数的な使い方をするのでしょうからsharedにすればいいと思います。 やりたいことがわからないとどれが正解ということは言えないと思います。

回答No.1

Sharedしているからではないでしょうか。 (1)Sharedするのをやめる (2)Dim IniFileName as string = "myapp.ini" をプロシージャー内で宣言する

関連するQ&A