国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C#中的事件

2024-07-21 02:18:45
字體:
來源:轉載
供稿:網友
/* 事件和異常相似,它們都由對象引發。但不同之處是,異常由try catch塊處理,而事件需要有訂閱它的主法(事件處理程序)來處理。
* 而且這個函數必須匹配事件的要的求方法簽名,這個簽名由一個委托指定。
* 事件由對象引發后 ,就開始執行它的處理程序。
*/
//下面看個例子
using system;
namespace me
{
public delegate void agehandler(int x);
public class person
{
int age;
public event agehandler ageadd;//用定義好的委托來定義一個事件
public person(int num)
{
age=num;
}
public person():this(0)
{
}
public int age
{
get
{
return age;
}
set
{
if(value>age)//當設定的年齡比現在年齡大時,觸發事件
{
this.ageadd(value-age);//傳給它的參數為增長的年齡
}
age=value;
}
}
}
public class class1
{
public static void main(string[] args)
{
person p=new person(20);
p.ageadd+=new agehandler(p_ageadd);//為person對象p的ageadd事件添
//程序,也就是方法p_ageadd
p.age=25;//觸發事件
}
public static void p_ageadd(int x)//ageadd的事件處理程序
{
console.writeline("增長了"+x+"歲");
}
}
}

/*現在運行程序,會在控制臺輸出"增長了5歲"
* 但 是我們應該發現,很多事件處理程序的參數如下:
* private void button1_click(object sender, system.eventargs e)
* 因為這個處理程序可能處理不止一個事件,所以sender表示了觸發它的對象
* e為由事件傳送的參數
* 下面我們再寫一個程序
*/
using system;
namespace me
{
//寫一類,作用為我們事件傳遞的參數
public class ageeventargs:system.eventargs
{
int oldage;
int newage;
public ageeventargs(int a,int b)
{
oldage=a;
newage=b;
}
public int oldage
{
get
{
return oldage;
}
}
public int newage
{
get
{
return newage;
}
}
public int addage
{
get
{
return newage-oldage;
}
}


}


//定義一個委托,第二個參數我們定義的類型
public delegate void agehandler(object sender,me.ageeventargs e);

public class person
{
public string name;
int age;
public event agehandler ageadd;
public person(int num,string n)
{
age=num;
name=n;
}
public person():this(0,"no name")
{
}
public int age
{
get
{
return age;
}
set
{
if(value>age)
{
this.ageadd(this,new me.ageeventargs(age,value));
}
age=value;
}
}

}
public class class1
{
static void main(string[] args)
{
person p=new person(20,"人");
p.ageadd+=new agehandler(p_ageadd);
p.age=25;
}
static void p_ageadd(object sender,me.ageeventargs e)
{
console.writeline(((person)sender).name);
console.writeline(e.oldage);
console.writeline(e.newage);
console.writeline(e.addage);

}
}

}
//到此,就簡單的說明了c#中的事件的用法


上一篇:C#自定義控件制作篇

下一篇:C#中的接口

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘潭市| 原平市| 巨野县| 安塞县| 乌鲁木齐县| 兰西县| 磴口县| 阿拉善左旗| 沧源| 蓬莱市| 丹阳市| 东至县| 河津市| 临汾市| 攀枝花市| 木兰县| 德昌县| 台东县| 奉贤区| 广西| 桦南县| 鹤峰县| 贡觉县| 奉节县| 鸡泽县| 桂东县| 临颍县| 汤阴县| 寿宁县| 金湖县| 四子王旗| 南城县| 靖安县| 汉中市| 隆回县| 广灵县| 临潭县| 威远县| 临澧县| 资兴市| 西城区|