C#,对象问题

问题描述:

对不起菜鸟问题,因为我刚刚开始使用C#。C#,对象问题

我有一个类

namespace WindowsFormsApplication1 
{ 
    class people 
    { 
     public int Cash; 
     public string LastName; 
     public void GiveCash(int amount) { this.Cash = this.Cash - amount; } 
     public void ReceiveCash(int amount) { this.Cash = this.Cash + amount; } 

    } 
} 

我初始化两个Object它。

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     people viktor = new people() { Cash = 1000, LastName = "Jushenko" }; 
     people julia = new people() { Cash = 500, LastName = "Timoshenko" }; 
    } 

但后来在代码中,我无法访问任何这些对象。 比如我,我使用

private void button1_Click(object sender, EventArgs e) 
    { viktor.cash = 200; } 

它类似于“名称‘胜利者’并不在这方面存在的......”我到底做错了什么?

谢谢!

+0

一个次要的事情,在C#中的名称类的首字母大写`人` – 2010-12-05 19:39:30

您在Form1构造函数声明局部变量。超出范围后您无法访问它们。您应声明它们在类领域的,就像这样:

public partial class Form1 : Form 
{ 
    private people viktor; 
    private people julia; 
    public Form1() 
    { 
     InitializeComponent(); 
     viktor = new people() { Cash = 1000, LastName = "Jushenko" }; 
     julia = new people() { Cash = 500, LastName = "Timoshenko" }; 
    } 

字段viktorjulia现在是你的类的一部分,并可以从类中的方法来访问它们。

+0

感谢,它工作! :) – Rob 2010-12-05 19:41:08

您的victor变量的范围局部于Form1构造函数,不能在其外部访问。

您需要将它提升一个领域,如果你想访问它在事件处理程序:

private people viktor; 

public Form1() 
{ 
    InitializeComponent(); 
    viktor = new people() { Cash = 1000, LastName = "Jushenko" }; 
    people julia = new people() { Cash = 500, LastName = "Timoshenko" }; 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    viktor.cash = 200; 
    // Note: the "julia" variable is not in scope here. 
} 
+0

感谢,它工作! :) – Rob 2010-12-05 19:50:13

有不同的范围,你需要注意。你无法访问你的变量的原因是因为它们在你无法访问的范围内。

一个解决方案是移动的变量,他们的电流范围:它的标准例如

public partial class Form1 : Form 
{ 
    private people victor = null; 
    private people julia = null; 
    public Form1() 
    { 
     InitializeComponent(); 
     this.viktor = new people() { Cash = 1000, LastName = "Jushenko" }; 
     this.julia = new people() { Cash = 500, LastName = "Timoshenko" }; 
    } 
.... 
+0

感谢,它工作! :) – Rob 2010-12-05 19:49:52