public class Exercisc : MonoBehaviour
{
void Start()
{
MyClass my = new MyClass(new MoneyClassEventArgs(300,400,500));
my.Money_change += OnAddMoney;
my.Money_change += OnSum;
my.OnEvent();
Debug.Log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1");
my.Money_change += OnAddMoney;
my.OnEvent();
Debug.Log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2");
my.Money_change -= OnAddMoney;
my.OnEvent();
my.Money_change += OnAddMoney;
Debug.Log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~3");
my.Money_change -= OnSum;
my.OnEvent();
//結果
A:=300B:=400C:=500
A+B+C=1200
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1
A:=300B:=400C:=500
A+B+C=1200
A:=300B:=400C:=500
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2
A:=300B:=400C:=500
A+B+C=1200
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~3
A:=300B:=400C:=500
A:=300B:=400C:=500
}
private void OnAddMoney(object sender,MoneyClassEventArgs my_money)
{
Debug.Log("A:=" + my_money.a_money + "B:=" + my_money.b_money + "C:=" + my_money.c_money);
}
public void OnSum(object sender,MoneyClassEventArgs my_money)
{
Debug.Log("A+B+C=" +(my_money.a_money+ my_money.b_money+ my_money.c_money) );
}
}
public class MyClass
{
public event EventHandler<MoneyClassEventArgs> Money_change;
public MoneyClassEventArgs money_num;
public MyClass(MoneyClassEventArgsmoney)
{
money_num= money;
}
public//觸發事件本來要是protected的但是這樣不能調用讓我偷懶一下 virtual void OnEvent()
{
Money_change?.Invoke(this, new MoneyClassEventArgs(money_num.a_money, money_num.b_money, money_num.c_money));
}
}
public class MoneyClassEventArgs: EventArgs
{
public int a_money { set; get; }
public int b_money { set; get; }
public int c_money { set; get; }
public MoneyClassEventArgs(int a,int b, int c)
{
a_money = a;
b_money = b;
c_money = c;
}
}