@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

string型変数が宣言直後にもスコープ外になる

1
投稿者投稿内容
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-03-19 11:42
たびたびお世話になります。msoです。

Page_LOadイベントで
this.hoge.Value = Request.Params["hoge"];
string mso = this.hoge.Value.ToString();

というようにコーディングをやった際にいつまでも
string型変数のmsoに値が入りません。
そこでウォッチ式でデータを確認をしたところ
エラー:識別子'mso'はスコープ外です
というメッセージが表示されていました。

string mso = this.hoge.Value.ToString();
の行でブレークさせて、F10で一行下の命令のところで
ウォッチ式で確認しています。

そこで
string mso = "test";
とやってみたのですが、やっぱりスコープ外になります。
intなどは期待通りに値がセットされるのですが、
私の試した範囲ではstringだけがセットされていませんでした。
なぜこのような現象が起きるのかわかりません。
どなたかご存知の方がいれば教えていただけないでしょうか?

ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2004-03-19 11:59
int は型、string はクラス、日付は...?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-19 12:07
 本当に“ウォッチしたいmso”が、ウォッチ式に入っていますか?「ローカル」だったか「自動変数」の方を見た方がよいと思います。

 本当に「スコープ外」なら、コンパイルでエラーが出ているはずです。それが通っていると言うことは、「式」の書き方を間違えているように思います。マウスポインタを当てても、現在の値が出てきますが、それは確認しました?


Request.Params["hoge"]←hogeの大文字小文字が違うとか。。。?
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2004-03-19 12:45
 直感的にRESしてしまって、ハズしてます。(^^;;

>Request.Params["hoge"]←hogeの大文字小文字が違うとか。。。?
 nullなりNothingなりでウォッチはできると思いますので、何かの勘違い系の誤りがあるのではないかと思います。

mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-03-19 13:08

ラフィンさん
引用:

int は型、string はクラス、日付は...?


int型は確認しているのですが、出ています。
ほかの型はこれから確認してみます。

引用:

>Request.Params["hoge"]←hogeの大文字小文字が違うとか。。。?
 nullなりNothingなりでウォッチはできると思いますので、何かの勘違い系の誤りがあるのではないかと思います。


んー、否定しきれないのですが、Request.Params["hoge"]のところで
大文字小文字の違いは無いことは確認しています。
#以前にも大文字小文字の区別がついてなかったことがあり、
#ここをにぎわせてしまったので、そのあたりは十分に見たはず。

Jittaさん
引用:

 本当に「スコープ外」なら、コンパイルでエラーが出ているはずです。それが通っていると言うことは、「式」の書き方を間違えているように思います。マウスポインタを当てても、現在の値が出てきますが、それは確認しました?


マウスポインタをあてても何もでてきません。
データ型などが出てきても良いはずなのですが、それすら出てこないのが
すごく不思議で仕方ありません。




んー、ちょんぼ系かも????
再度深く確認しなおします。
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-03-19 13:12
あとはデバッグ情報ファイルがうまくできていないとか
binフォルダにある「.pdb」ファイルを削除してからリビルドしてみてはどうでしょうか
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2004-03-19 13:37
引用:

msoさんの書き込み (2004-03-19 13:08) より:

ラフィンさん
引用:

int は型、string はクラス、日付は...?


int型は確認しているのですが、出ています。
ほかの型はこれから確認してみます。



 ここは気にせんといてください。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-03-19 13:57
原因がわかりました。

コードの最適化をTrueにしていたため、
その後で使っていない変数に関しては
無視されるようです。

宣言をした後に、別の変数に代入をするとかすればしっかりと
ウォッチ式で確認することができました。

例)
string mso = "aaa";
string mso2 = mso; //最適化しているときにここの処理をなくすとスコープ外になるみたい
1

スキルアップ/キャリアアップ(JOB@IT)