
こんばんわ!
VB6.0からの移行でVB.net2012に挑戦中なんですが、グローバル変数の宣言の仕方で分からないことがあり質問しに着ました!
内容
モジュール内で
public hoge as string="aaa"
と宣言するのと
モジュール内で
public hoge as string
と宣言しておいて
フォーム起動時に
hoge="aaa"
と宣言するのにどのような違いがあるのでしょうか?
hogeの変数を変更したいのですが、上記の方法だと動いて、下記の方法だと動かないのですが・・・
まだ良く分かっていないので、程度の低い質問で申し訳ないのですが、アドバイスのほどよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
> グローバルで変数として一箇所のみで宣言しているのですが、それで別の変数になることはあるのでしょうか?
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)のように)使用しているのですが
配列の添字を文字列型にするなど話になりません。問題外です。
数値型にして下さい。
定義へ移動は便利ですね^^
使わせてもらいますw
>変数宣言は同じで、初期値が違います。…見たまんまだと思いますが。
ですよね~そのはずなのに動かないです・・・。
>「 public hoge as string」と宣言したhoge
はミスですw失礼しましたw実際はintegerで宣言してますw
色々試して、初期値を入れておいて、改めて別の数値をいれると動いたので、それでやってみます。
本当にナンなんだろう・・・
No.4
- 回答日時:
>色々試して、初期値を入れておいて、改めて別の数値をいれると動いたので、それでやってみます。
つまり変数の宣言の問題ではなくて、初期値の設定の問題だという事ですよね。
フォームのロード前か、フォームのロード時でも初期値の設定のコードの実行前に
使用しているということでは?
モジュール側で配列をグローバル宣言してると、モジュールが呼ばれた際に初期化の
処理が全て走ってしまうからフォームのロードイベントに書いてある初期値設定の
コードを実行する前にモジュール側で初期化しようとしているとか。
プログラムの開始から1行1行ステップ実行すれば分かるのでは?
No.1
- 回答日時:
・form起動より先にhogeを参照するような、動作になっている
・名前空間が違うなどで、「 public hoge as string」と宣言したhogeと、「フォーム起動時にhoge="aaa"」とは別の変数になっている
などが考えられます。
「動かない」とは具体的にどのような状態なのでしょうか?
・form起動より先にhogeを参照するような、動作になっている
なっていないんですToT
・名前空間が違うなどで、「 public hoge as string」と宣言したhogeと、「フォーム起動時にhoge="aaa"」とは別の変数になっている
グローバルで変数として一箇所のみで宣言しているのですが、それで別の変数になることはあるのでしょうか?
動かないのは配列の項目数(例えば、hoge_arra(hoge)のように)使用しているのですが、エラーが出ます・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
【VB.NET】App.configにファイルパスを設定して読み込みたい
Microsoft ASP
-
変数の参照でエラーが出てしまいます。(VB.NET)
Visual Basic(VBA)
-
-
4
CloseとDisposeの違い
Visual Basic(VBA)
-
5
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
6
フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい
Visual Basic(VBA)
-
7
[VB.net] ボタン(Flat)のEnable時の背景色について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【正規表現】【javascript】CR...
-
同じ型【ハイフンと数字】だけ...
-
confirmの連続?
-
バイナリファイルから文字列を...
-
responseTextを使っての書き換...
-
引数付きコンストラクタでコン...
-
-(ハイフン)_(アンダーバー)の...
-
Inherits EventArgsの初期化
-
構造体を引数で関数へ渡す
-
Vb.netのグローバル変数の宣言...
-
文字列の受け渡しについて
-
同じIDで定義した要素の配列を...
-
Matlabで自作関数をオーバーロード
-
onclickとonkeypressの重複
-
functionから別のfunctionを実...
-
JAVAスクリプトで指定時間以降...
-
ASP.NETのコントロールの値をJa...
-
onchangeイベントを使ってspan...
-
ページ内に複数表がある場合のT...
-
「nullまたはオブジェクトでは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTTPSのとき":"が"%3A"ではなく...
-
ボタンをクリックすると数が増...
-
Boolean型配列中のTrueの有無を...
-
サブウインドウから親ウインド...
-
Linux バイナリ実行できない "...
-
ASP+アクセスでのSQLコメントに...
-
Excel VBA の ChangeFileAccess
-
Vb.netのグローバル変数の宣言...
-
正規表現で半角数字1桁のみを全...
-
Objective-C 変数への代入エラー
-
console.logを使用して変数名と...
-
サンプルによく出てくるhogehog...
-
onclick="" の""を変えることが...
-
ifreamをリロードしたい
-
【Jquery】changeイベント毎にa...
-
クラス内からインスタンス先の...
-
MFCのキャプション変更
-
ひとつ上の階層にアクセスさせ...
-
【正規表現】【javascript】CR...
-
同じ型【ハイフンと数字】だけ...
おすすめ情報