国产探花免费观看_亚洲丰满少妇自慰呻吟_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#中的接口

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 焉耆| 嘉义县| 时尚| 林芝县| 华蓥市| 江津市| 准格尔旗| 木兰县| 周至县| 丰城市| 平远县| 诸城市| 宁津县| 芜湖县| 武邑县| 宽甸| 榆中县| 玉山县| 垣曲县| 南宫市| 九龙县| 象山县| 安阳市| 乌恰县| 武强县| 大港区| 文成县| 页游| 万载县| 和静县| 克什克腾旗| 清镇市| 屯昌县| 新乡县| 神农架林区| 沭阳县| 双牌县| 弥渡县| 铜梁县| 垦利县| 黄平县|