2012-02-04 26 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