- PR -

変数宣言による動作の違いについて

1
投稿者投稿内容
たなすぺ
常連さん
会議室デビュー日: 2003/06/23
投稿数: 35
投稿日時: 2005-07-20 22:36
現在、.Net Framework2003、ASP.NET、C#を使用して
開発をしております。

そこで下記のような現象が発生しています。

============================================================
○現象1
1.Label型の変数をprivateで宣言する
2.上記変数にプロパティ設定した後、メソッドA内で
   TableCellにAddする。

発生現象:TableCellに追加したはずのLabelが生成されない。
      メソッドAではvisibleプロパティはtrueであるが
      RenderContentsメソッドをオーバーライドして
      Label型の変数を参照すると、visibleプロパティはfalseに
      変更されている。
○現象2
1.メソッドA内でLabel型の変数を宣言する
2.上記変数にプロパティ設定した後、メソッドA内で
   TableCellにAddする。
発生現象:TableCellに追加したLabelは生成されない。
      メソッドAではvisibleプロパティはtrue、
      かつRenderContentsメソッドをオーバーライドして
      Label型の変数を参照すると、visibleプロパティはtrue
      を保持している。
============================================================

実現したいことは【現象2】の方法で解決できたのですが、
なぜprivateで宣言した変数だと、うまく値が
保持されないのか、わかりません。
※ちなみにvisibleプロパティ以外のプロパティ情報の
  保持はされていました。

上記現象に尽きまして、ご存知の方がいらっしゃいましたら、
ご教授の程、宜しくお願いいたします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-07-21 11:06
引用:

たなすぺさんの書き込み (2005-07-20 22:36) より:
1.Label型の変数をprivateで宣言する
2.上記変数にプロパティ設定した後、



ん〜・・・?
privateと宣言していたらインスタンスを参照した状態にはなっていない(null)と思いますが。
FindControl()等を使えばそのLabelのインスタンスを取得できるかもしれませんが、そのまま
Label1.Visible
などとプロパティを設定・取得はできないと思います。

何か勘違いされているのでは?
私が勘違いしているのかな?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2005-07-21 11:07
コードビハインドを使っている場合、コードページ(.csファイル)に記述されたコードは直接動いてるわけじゃありません。
aspxファイルがコードページを継承して、aspxファイル(子クラス)から親クラスのコードを実行する、という形になります。
このため、private宣言された変数は継承したaspxファイルからは見つけることができず、うまく動作しない、ということになります。
たぶんそこじゃないのかなぁ。
1

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