- - PR -
string型変数が宣言直後にもスコープ外になる
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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だけがセットされていませんでした。 なぜこのような現象が起きるのかわかりません。 どなたかご存知の方がいれば教えていただけないでしょうか? | ||||||||||||
|
投稿日時: 2004-03-19 11:59
int は型、string はクラス、日付は...?
| ||||||||||||
|
投稿日時: 2004-03-19 12:07
本当に“ウォッチしたいmso”が、ウォッチ式に入っていますか?「ローカル」だったか「自動変数」の方を見た方がよいと思います。
本当に「スコープ外」なら、コンパイルでエラーが出ているはずです。それが通っていると言うことは、「式」の書き方を間違えているように思います。マウスポインタを当てても、現在の値が出てきますが、それは確認しました? Request.Params["hoge"]←hogeの大文字小文字が違うとか。。。? | ||||||||||||
|
投稿日時: 2004-03-19 12:45
直感的にRESしてしまって、ハズしてます。(^^;;
>Request.Params["hoge"]←hogeの大文字小文字が違うとか。。。? nullなりNothingなりでウォッチはできると思いますので、何かの勘違い系の誤りがあるのではないかと思います。 | ||||||||||||
|
投稿日時: 2004-03-19 13:08
ラフィンさん
int型は確認しているのですが、出ています。 ほかの型はこれから確認してみます。
んー、否定しきれないのですが、Request.Params["hoge"]のところで 大文字小文字の違いは無いことは確認しています。 #以前にも大文字小文字の区別がついてなかったことがあり、 #ここをにぎわせてしまったので、そのあたりは十分に見たはず。 Jittaさん
マウスポインタをあてても何もでてきません。 データ型などが出てきても良いはずなのですが、それすら出てこないのが すごく不思議で仕方ありません。 んー、ちょんぼ系かも???? 再度深く確認しなおします。 | ||||||||||||
|
投稿日時: 2004-03-19 13:12
あとはデバッグ情報ファイルがうまくできていないとか
binフォルダにある「.pdb」ファイルを削除してからリビルドしてみてはどうでしょうか | ||||||||||||
|
投稿日時: 2004-03-19 13:37
ここは気にせんといてください。 | ||||||||||||
|
投稿日時: 2004-03-19 13:57
原因がわかりました。
コードの最適化をTrueにしていたため、 その後で使っていない変数に関しては 無視されるようです。 宣言をした後に、別の変数に代入をするとかすればしっかりと ウォッチ式で確認することができました。 例) string mso = "aaa"; string mso2 = mso; //最適化しているときにここの処理をなくすとスコープ外になるみたい | ||||||||||||
1
