2012-02-04 16 views
0

私が抱えている問題は、クラスとオブジェクトの理解に関連していると思います。カスタムクラスから作成されたオブジェクトへのアクセス

質問には2つの部分があります。

  1. なぜ私はオブジェクトcar1がテキストボックスをcar1.nameの値に設定するのを見ますか?
  2. 後でコード内の任意のボタンまたはメソッドからcar1オブジェクトにアクセスするにはどうすればよいですか。

    protected void Page_Load(object sender, EventArgs e) 
    { 
        Cars car1 = new Cars(); 
        car1.Name = "Chevy"; 
    
    } 
    
    protected void Button1_Click(object sender, EventArgs e) 
    { 
    
        TextBox1.Text = car1.Name.ToString(); 
    
    } 
    

car1.Name.ToString();ボタンアクションからは見えません。

答えて

3

Page_Loadメソッド内で変数car1が宣言されているため、そのメソッドのみが表示されます。

すべての方法のうちの外側にと宣言するフィールドに入力する必要があります。

Cars car1; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    car1 = new Cars(); 
    car1.Name = "Chevy"; 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    TextBox1.Text = car1.Name.ToString(); 
} 

この方法を完了したら、あなたはそれ以外の場合は、あなたがNullReferenceExceptionを取得します、(私の例ではPage_Loadのすなわち最初の行)、それを初期化した後car1上の唯一のコール方法に世話をする必要があります。私はに車を置くことをお勧め

Cars car1 = new Cars(); 
protected void Page_Load(object sender, EventArgs e) 
{ 
    car1.Name = "Chevy"; 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    TextBox1.Text = car1.Name.ToString(); 
} 
-1

:可能な例外を回避することができます

代替は(唯一のフィールドの代わりに、メソッド変数として)あなたがあなたの例で行ったように、宣言時に初期化することですクラス内のプロパティ、およびビューステートの利用。

public Cars Car { 
get { 
    return (Cars) ViewState["Car"]; 
} 
set { 
    ViewState["Car"] = value; 
} 
} 
+0

これは不必要に複雑なようです。なぜOPはここでビューステートを使用しますか?そして、オブジェクトを前後に並べて、それを参照するたびにビューステートにするのはなぜですか? –

関連する問題