プロが教えるわが家の防犯対策術!

こんばんわ!
VB6.0からの移行でVB.net2012に挑戦中なんですが、グローバル変数の宣言の仕方で分からないことがあり質問しに着ました!

内容
モジュール内で
public hoge as string="aaa"
と宣言するのと

モジュール内で
public hoge as string
と宣言しておいて
フォーム起動時に
hoge="aaa"
と宣言するのにどのような違いがあるのでしょうか?

hogeの変数を変更したいのですが、上記の方法だと動いて、下記の方法だと動かないのですが・・・
まだ良く分かっていないので、程度の低い質問で申し訳ないのですが、アドバイスのほどよろしくお願いいたします。

A 回答 (4件)

> グローバルで変数として一箇所のみで宣言しているのですが、それで別の変数になることはあるのでしょうか?


hoge が本当は text とかなら有り得ます。この場合、フォームの Text プロパティが変更されます。
別のクラスなどを Imports していて、そちらに同名の変数がある場合も有り得るかも知れません。
ただし、スコープが同じ変数が複数あると↓文法エラーが出るはず。
http://msdn.microsoft.com/ja-jp/library/856b0w3t …
http://msdn.microsoft.com/ja-jp/library/03x63w1z …

上記の現象の確認には、変数を使用している場所で右クリックメニューから「定義へ移動」で
その変数がどこで宣言されたものを参照しているか分かります。
変数のスコープが狭いものが優先して使用されるため、ローカル宣言や、自分が定義していなくとも
既に VB.NET で宣言されているものとかぶってはだめです。


>意味合い自体は同じであると認識しているのですが、あっていますか?
変数宣言は同じで、初期値が違います。…見たまんまだと思いますが。


>「 public hoge as string」と宣言したhoge
>動かないのは配列の項目数(例えば、hoge_arra(hoge)のように)使用しているのですが
配列の添字を文字列型にするなど話になりません。問題外です。
数値型にして下さい。
    • good
    • 0
この回答へのお礼

定義へ移動は便利ですね^^
使わせてもらいますw

>変数宣言は同じで、初期値が違います。…見たまんまだと思いますが。
ですよね~そのはずなのに動かないです・・・。

>「 public hoge as string」と宣言したhoge
はミスですw失礼しましたw実際はintegerで宣言してますw

色々試して、初期値を入れておいて、改めて別の数値をいれると動いたので、それでやってみます。

本当にナンなんだろう・・・

お礼日時:2013/03/12 12:48

>色々試して、初期値を入れておいて、改めて別の数値をいれると動いたので、それでやってみます。


つまり変数の宣言の問題ではなくて、初期値の設定の問題だという事ですよね。
フォームのロード前か、フォームのロード時でも初期値の設定のコードの実行前に
使用しているということでは?
モジュール側で配列をグローバル宣言してると、モジュールが呼ばれた際に初期化の
処理が全て走ってしまうからフォームのロードイベントに書いてある初期値設定の
コードを実行する前にモジュール側で初期化しようとしているとか。

プログラムの開始から1行1行ステップ実行すれば分かるのでは?
    • good
    • 1

#1 さんに追加で、


(起動しているフォームのインスタンスが違うなどの理由で)
そもそも処理が実行されていない可能性もあります。
ブレークポイントを設定して処理が実行されている事は
確認しましたか?
    • good
    • 0
この回答へのお礼

処理の実行までは確認できているのですが、ダメですね~。
なぜかエラーが・・・

意味合い自体は同じであると認識しているのですが、あっていますか?

お礼日時:2013/03/07 00:17

・form起動より先にhogeを参照するような、動作になっている


・名前空間が違うなどで、「 public hoge as string」と宣言したhogeと、「フォーム起動時にhoge="aaa"」とは別の変数になっている

などが考えられます。

「動かない」とは具体的にどのような状態なのでしょうか?
    • good
    • 0
この回答へのお礼

・form起動より先にhogeを参照するような、動作になっている
なっていないんですToT

・名前空間が違うなどで、「 public hoge as string」と宣言したhogeと、「フォーム起動時にhoge="aaa"」とは別の変数になっている
グローバルで変数として一箇所のみで宣言しているのですが、それで別の変数になることはあるのでしょうか?

動かないのは配列の項目数(例えば、hoge_arra(hoge)のように)使用しているのですが、エラーが出ます・・・

お礼日時:2013/03/07 00:17

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

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


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