→ ssccg: DangerEvent就是DangerEvent,不能放SlowSpeedEvent 08/08 23:15
→ ssccg: 你有什麼兩個handler一定要用不同signature的理由嗎 08/08 23:16
→ ssccg: 把TooSlow一樣改成回int,然後new DangerEvent(TooSlow) 08/08 23:17
改回來變成這樣子, 但又遇到另一個問題
我想要程式自行判斷去呼叫 TooFast 或 TooSlow
但是當我設定 Benz.Speed = 22; 時
雖然進入Car class 跑到
else if(value < 80)
{
if (Danger != null)
value = Danger(value);
}
但是卻變成TooFast與TooSlow 都會各執行一遍
有辦法可以只執行TooFast 或 TooSlow 嗎?
修正後程式碼
private void button1_Click(object sender, EventArgs e)
{
Car Benz = new Car();
Benz.Danger += new DangerEvent(TooFast);
Benz.Danger += new DangerEvent(TooSlow);
Benz.Speed = 22;
}
class Car
{
private int _speed; //區域變數
public string sName { get; set; }
public event DangerEvent Danger;
public int Speed
{
get
{
return _speed;
}
set
{
if (value > 200)
{
if (Danger != null)
value = Danger(value);
}
else if(value < 80)
{
if (Danger != null)
value = Danger(value);
}
_speed = value;
}
}
}
※ 編輯: jodo1984 (114.39.147.7), 08/08/2015 23:36:57
推 wulouise: 把else if的if去掉就好吧? 可能你當時Danger(value)< 80 08/09 10:14
推 fo40225: 因為你Danger綁了兩個方法 執行Danger兩個方法都會執行 08/09 10:46
推 wulouise: err抱歉我不知道我剛才眼睛在看什麼,回的東西莫名其妙 08/09 11:59
→ largesperm: 現在不是都不推這個方法了嗎 08/18 18:07