2012-02-04 23 views
0

我認爲我遇到的問題與我對類和對象的理解有關。訪問從自定義類創建的對象

這個問題有兩個部分。

  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(); 
} 

完成後這種方式,你需要對其進行初始化(在我的例子中Page_Load即第一行)後注意只調用方法上car1,否則你將得到一個NullReferenceException

能夠避免可能的例外另一種方法是申報期間初始化,因爲你在你的例子做了(只是作爲一個字段,而不是方法變量):

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會在這裏使用viewstate?爲什麼序列化對象來查看每個引用的對象狀態? – 2012-02-06 12:28:20