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

明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

C#事件機(jī)制歸納(上)

[摘要]1.委派的實(shí)現(xiàn)過程。 首先來看一下委派,委派其實(shí)就是方法的傳遞,并不定義方法的實(shí)現(xiàn)。事件其實(shí)就是標(biāo)準(zhǔn)化了的委派,為了事件處理過程特制的、稍微專業(yè)化一點(diǎn)的組播委派(多點(diǎn)委派)。下面舉一個例子,我覺得把委派的例子和事件的例子比較,會比較容易理解。 using System; class Class...
  1.委派的實(shí)現(xiàn)過程。
首先來看一下委派,委派其實(shí)就是方法的傳遞,并不定義方法的實(shí)現(xiàn)。事件其實(shí)就是標(biāo)準(zhǔn)化了的委派,為了事件處理過程特制的、稍微專業(yè)化一點(diǎn)的組播委派(多點(diǎn)委派)。下面舉一個例子,我覺得把委派的例子和事件的例子比較,會比較容易理解。
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,其簽名匹配與兩個函數(shù)Add()和Multiply()的簽名(也就是其帶的參數(shù)類型數(shù)量相同):
delegate int MathOp(int i1,int i2);
Main()中代碼首先使用新的委托類型聲明一個變量,并且初始化委托變量.注意,聲明時的參數(shù)只要使用委托傳遞的函數(shù)的函數(shù)名,而不加括號:
MathOp op1=new MathOp(Add);
(或為MathOp op1=new MathOp(Multiply);)
委托傳遞的函數(shù)的函數(shù)體:
public static int Add(int i1,int i2)
{
       return i1+i2;
}
public static int Multiply(int i1,int i2)
{
      return i1*i2;
}
然后把委托變量看作是一個函數(shù)名,將參數(shù)傳遞給函數(shù)。 Console.WriteLine(op1(100,200));
Console.WriteLine(op2(100,200));
 
 
2.事件的實(shí)現(xiàn)過程
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(可以看作是委托的一個實(shí)例。):
public delegate void DelegateRegisterOkEvent();
public event DelegateRegisterOkEvent RegisterOK;
然后在Main()函數(shù)中,實(shí)例化Student類,然后s1.RegisterOK事件委托給了Student_RegisterOK 方法。通過“+=”(加等于)操作符非常容易地為.Net對象中的一個事件添加一個甚至多個響應(yīng)方法;還可以通過非常簡單的“-=”(減等于)操作符取消這些響應(yīng)方法。
然后,當(dāng)調(diào)用s1.Register()時,事件s1.RegisterOK發(fā)生。



主站蜘蛛池模板: 亚欧精品一区二区三区 | 色黄视频 | 亚洲乱码一二三四五六区 | 香蕉视频在线观看网址 | 视频一区在线播放 | 天天舔天天射天天操 | 日本在线看小视频网址 | 青青草原影院 | 日本免费一区二区视频 | 亚洲精品国产福利片 | 日韩视频在线精品视频免费观看 | 色操网| 日韩成片 | 亚洲视频在线观 | 午夜在线亚洲 | 色狠狠成人综合网 | 欧美性视频在线播放黑人 | 亚洲ww| 午夜久久久久久亚洲国产精品 | 婷婷色九月综合激情丁香 | 日本无人区码卡1 | 深夜福利在线播放 | 亚洲国产天堂久久综合226 | 日韩首页 | 亚洲国产91在线 | 亚洲欧美视频网站 | 亚洲一区视频 | 日韩国产欧美在线观看 | 香蕉香蕉国产片一级一级毛片 | 最新版天堂资源中文官网 | 最近手机中文字幕大全首页 | 欧美在线视频观看 | 日韩推理片在线免费看网站 | 日本高清视频不卡 | 青娱分类视频精品免费2 | 欧美在线观看第一页 | 婷婷色吧 | 青青草免费在线观看视频 | 色噜噜在线观看 | 一级aa免费视频毛片 | 日韩精品亚洲专区在线观看 |