アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

参考URLの「インスタンスを作成せずに呼び出せるメソッド 」が参考になるかもしれません。



Sharedをつけると、インスタンス生成しなくても呼び出せるメソッドになるので、インスタンスに属するメンバ変数などにアクセスできません。

Sharedメソッドから参照したいのであれば、
そのSharedメソッドと同じクラス内でShared変数とするか、Sharedメソッドの引数にするかなどで対応できます。

参考URL:http://www.atmarkit.co.jp/fdotnet/vb6tonet2/vbne …
    • good
    • 0

つまり、shared(クラス)メソッドから、インスタンスのメンバをインスタンスを作成もしてないのにアクセスしようとしているというようなことですかね?


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

Sharedしているからではないでしょうか。



(1)Sharedするのをやめる

(2)Dim IniFileName as string = "myapp.ini"
をプロシージャー内で宣言する
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A