六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

C#事件機制歸納(上)

[摘要]1.委派的實現過程。 首先來看一下委派,委派其實就是方法的傳遞,并不定義方法的實現。事件其實就是標準化了的委派,為了事件處理過程特制的、稍微專業化一點的組播委派(多點委派)。下面舉一個例子,我覺得把委派的例子和事件的例子比較,會比較容易理解。 using System; class Class...
  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發生。



主站蜘蛛池模板: 永久免费观看午夜视频在线 | 天天射天天操天天干 | 亚洲欧美精品 | 亚洲精品91 | 亚洲第一区二区快射影院 | 四虎永久在线精品视频免费观看 | 午夜影视免费观看 | 日本高清视频一区二区三区 | 日日人人 | 啪啪午夜免费 | 伊人www| 亚洲日韩中文字幕在线播放 | 日韩在线观看免费完整版视频 | 亚洲成a人片在线观看播放 亚洲成a人片在线观看www | 天堂网址 | 中文精品视频一区二区在线观看 | 伊人蕉| 亚洲小视频网站 | 亚洲综合99 | 青青草精品在线视频 | 三级国产视频 | 深爱婷婷 | 四虎影视国产精品亚洲精品hd | 色综合色综合色综合色综合网 | 亚洲另类图区 | 日本韩国视频在线观看 | 日本成人xxx | 中文字幕日韩精品在线 | 青青久操视频 | 日韩诱惑| 日韩成人午夜 | 亚洲综合九九 | 亚洲福利视频一区二区三区 | 午夜国产情侣拍视频 | 天天艹日日干 | 一级aa免费视频毛片 | 天天色天 | 伊人中文字幕 | 青草娱乐视频 | 日韩a级片视频 | 婷婷亚洲综合一区二区 |