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

首頁 > 開發 > 綜合 > 正文

C#事件機制歸納(上)

2024-07-21 02:19:34
字體:
來源:轉載
供稿:網友
1.委派的實現過程。

首先來看一下委派,委派其實就是方法的傳遞,并不定義方法的實現。事件其實就是標準化了的委派,為了事件處理過程特制的、稍微專業化一點的組播委派(多點委派)。下面舉一個例子,我覺得把委派的例子和事件的例子比較,會比較容易理解。

using system;



class class1

{

delegate int mathop(int i1,int i2);

static void main(string[] args)

{

mathop op1=new mathop(add);

mathop op2=new mathop(multiply);

console.writeline(op1(100,200));

console.writeline(op2(100,200));

console.readline();

}

public static int add(int i1,int i2)

{

return i1+i2;

}

public static int multiply(int i1,int i2)

{

return i1*i2;

}

}



首先代碼定義了一個委托mathop,其簽名匹配與兩個函數add()和multiply()的簽名(也就是其帶的參數類型數量相同):

delegate int mathop(int i1,int i2);

main()中代碼首先使用新的委托類型聲明一個變量,并且初始化委托變量.注意,聲明時的參數只要使用委托傳遞的函數的函數名,而不加括號:

mathop op1=new mathop(add);

(或為mathop op1=new mathop(multiply);)

委托傳遞的函數的函數體:

public static int add(int i1,int i2)

{

return i1+i2;

}

public static int multiply(int i1,int i2)

{

return i1*i2;

}

然后把委托變量看作是一個函數名,將參數傳遞給函數。 console.writeline(op1(100,200));

console.writeline(op2(100,200));





2.事件的實現過程

using system;



class class1

{

static void main(string[] args)

{

student s1=new student();

student s2=new student();

s1.registerok +=new student.delegateregisterokevent(student_registerok);

s2.registerok +=new student.delegateregisterokevent(student_registerok);

s1.register();

s2.register();

console.readline();

}

static void student_registerok()

{

console.writeline("hello");

}

}



class student

{

public delegate void delegateregisterokevent();

public event delegateregisterokevent registerok;

public string name;

public void register()

{

console.writeline("register method");

registerok();

}

}

在student類中,先聲明了委托delegateregisterokevent(),然后使用event和要使用的委托類型(前面定義的delegateregisterokevent委托類型)聲明事件registerok(可以看作是委托的一個實例。):

public delegate void delegateregisterokevent();

public event delegateregisterokevent registerok;

然后在main()函數中,實例化student類,然后s1.registerok事件委托給了student_registerok 方法。通過“+=”(加等于)操作符非常容易地為.net對象中的一個事件添加一個甚至多個響應方法;還可以通過非常簡單的“-=”(減等于)操作符取消這些響應方法。

然后,當調用s1.register()時,事件s1.registerok發生。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上思县| 九龙城区| 黔西| 色达县| 永兴县| 梅州市| 汝阳县| 木兰县| 奎屯市| 栖霞市| 巴马| 廊坊市| 蓬莱市| 正阳县| 正宁县| 石首市| 太仆寺旗| 海盐县| 保德县| 醴陵市| 漳浦县| 张掖市| 平顶山市| 三明市| 丰城市| 马公市| 博白县| 随州市| 靖州| 陇西县| 乌拉特前旗| 普兰店市| 郧西县| 深州市| 托克逊县| 北川| 五原县| 吉安县| 宁南县| 东乡族自治县| 宁强县|