2010-12-05 8 views
2

ルーキーの質問には申し訳ありませんが、私はちょうど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; } 

    } 
} 

を持っていると私はそれで2つのオブジェクトを初期化します。

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#でその標準を名前のクラスにタイトルケースには、例えば:

一つの解決策は、現在のスコープ外の変数を移動するだろう'People' –

答えて

3

あなたは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

1

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

1

注意する必要のあるスコープは異なります。変数にアクセスできないのは、アクセスできないスコープ内にあるためです。

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