0

私は人々のクラスを持っているとしましょう。その people クラスに現金プロパティと名前プロパティがあり、初期化されたときに現金の金額と必要な名前を設定できます。people オブジェクトから現金を受け取り、それを他の people オブジェクトに与え、それを与えた people オブジェクトからそれを奪うという Give メソッドを作りたいとしましょう。これで、クラスの外に置いて、初期化後に (x) オブジェクトを (y) オブジェクトに与えることができることがわかりましたが、それは私が望んでいることではありません。オブジェクトを実際に初期化する前に、変数を受け取ることができるメソッドが必要なので、初期化した後は、パラメーターを入力するだけです。

これは混乱を招く可能性があることを知っているので、私が言っていることをより詳しく説明するためにいくつかの例を示します.

だから、私の人のクラスが次のようになっているとしましょう:

class People
{
    private decimal cash;
    private string name = "";
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    public decimal Cash
    {
        get { return cash; }
        set { cash = value; }
    }
}

クラスのインスタンス1に同じクラスを設定して、クラスのインスタンス2に現金を渡す方法はありますか?

bet という名前の別のクラスを作成し、そこにメソッドを入れてみました。しかし、それを people クラスに入れようとしたときと同じ問題が発生します。できない

public void give (People person, decimal amount)
{
    person.cash += amount 
    person.cash -= amount
}

私は同じ変数を使用しているため、金額を指定して同じオブジェクトの金額を取るだけです。

与える方法と取る方法を 1 つずつ作成する必要がありますか? 動的にしたい場合、メソッドのみを呼び出し、フォームで初期化したオブジェクトから手動で + と - の量を必要としない場合、どのように機能しますか?

私はこれが本当に初めてで、イベントの使い方がまだわからないことに注意してください。

4

2 に答える 2

1

現在の人から別の人に送金する必要があります。Give メソッドの私の実装を調査してください

class People
{
private decimal cash;
private string name = "";
public string Name
{
get { return name; }
set { name = value; }
}
public decimal Cash
{
get { return cash; }
set { cash = value; }
}

public void Give(Person target, decimal amount)
{
  Cash -= amount;
  target.Cash += amount;
}
}
于 2013-02-08T06:20:04.317 に答える
0

関数に3つのパラメータを渡すことができます。

class People
{
private decimal cash;
private string name = "";
public string Name
{
get { return name; }
set { name = value; }
}
public decimal Cash
{
get { return cash; }
set { cash = value; }
}

public static void Give(People p1,People p2, decimal amount)
{
  p2.Cash -= amount;
  p1.Cash += amount;
}
}

Viacheslavが提供するソリューションを使用することもできますが、そのためには、Give関数を呼び出すオブジェクトに注意する必要がありますが、このメソッドでは、クラスから直接メソッドを呼び出すことができます。関数を呼び出すためのオブジェクトは必要ありません。

于 2013-02-08T06:31:10.703 に答える