人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

C#代表元及事件觸發(fā)

C#代表元及事件觸發(fā)

更新時間:2022-09-14 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

代表元是C#中比較復(fù)雜的概念,C#中的代表元和C/C++中的函數(shù)指針非常相似使用代表元可以把代表元內(nèi)部方法的引用封裝起來然后通過它使用代表元引用的方法。
它有一個特性就是不需要知道被引用的方法屬于那一個類對象只要函數(shù)的參數(shù)個數(shù)與返回類型與代表元對象一致。這樣說可能比較抽象我下面舉幾個簡單的例子希望能給廣大初學(xué)者一些基本的認識

//定義一個返回值為string的無參數(shù)的代表元注意這個代表元只能引用對象中返回值為string的無參數(shù)方法
delegate string MyDelegate();
public class MyClass
{
public string SayHello()
{
return "Hello the world!";
}

}
public class TestMyClass
{
public static void Main(string[] args)
{
MyClass myClass1=new MyClass();
MyDelegate myDelegate1=new MyDelegate(myClass1.SayHello);
//下面就使用myDelegate1代替對象myClass1的SayHello方法
System.Console.WriteLine(myDelegate1());
//輸出結(jié)果為hello the world! 與調(diào)用myClass1.SayHello();效果相同
}
}
如果代表元只有這點功能它就沒有什么太大的用處了,代表元還有一個非常有用的功能就是定義復(fù)合代表元對象只有同樣類型的代表元才能夠復(fù)合起來 + 能定義復(fù)合代表元對象 - 從一個復(fù)合代表元中去掉一個代表元對象
delegate void MyDelegate(string s);
public class MyClass
{
public void SayHello(string who)
{
System.Console.WriteLine( who+"hello!");
}
public void SayGoodBye(string who)
{
System.Console.WriteLine( who+"good bye!");
}

}

public class TestMyClass
{
public static void Main(string[] args)
{
MyClass myClass1=new MyClass();
MyDelegate myDelegate,myDelegate1;
myDelegate=new MyDelegate(myClass1.SayHello);
myDelegate1=new MyDelegate(myClass1.SayGoodBye);
myDelegate+=myDelegate1;
//這樣調(diào)用myDeletage就相當于同時調(diào)用了myClass1.SayHello和myClass1.SayGoodBye
myDelegate("love.net ");
//執(zhí)行結(jié)果輸出love.net hello! love.net good bye!
}
}
事件驅(qū)動是windows應(yīng)用程序的重要特征 C#代表元就是用于產(chǎn)生事件,事件就是用于在一個組件中監(jiān)聽這個組件的變化
下面再舉一個簡單的例子
//定義一個事件代理(代表元)
public delegate void EventHandler(string str);
//定義事件源類
class EventSource
{
//定義代表元作為事件源類的成員
public event EventHandler Say;
public void TriggerEvent()
{
if(this.Say!=null)
//因為Say是個代表元所以執(zhí)行Say方法所做的實際操作由注冊到它的事件處理函數(shù)決定
Say("A event take place!");
}
}
//測試
class Test
{
public static void Main()
{
EventSource aEventSource=new EventSource();
//注冊事件處理函數(shù)為MyEvent 顯示一串字符類似于this.Click+=new EventHandler(Button1_OnClick);
aEventSource.Say+=new EventHandler(MyEvent);
//此處為演示事件觸發(fā)過程所以就用程序自動觸發(fā)
//在圖形界面應(yīng)用程序中,一般由用戶觸發(fā)事件,后由操作系統(tǒng)發(fā)送消息并調(diào)用處理函數(shù) 所以程序員只要注冊事件處理函數(shù)
//和編寫事件處理函數(shù)的代碼其他就不用關(guān)心了
aEventSource.TriggerEvent();
}
//事件處理函數(shù)
public static void MyEvent(string str)
{
System.Console.WriteLine(str);
}

}


 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 兴和县| 疏勒县| 光泽县| 淮南市| 浦江县| 宜宾市| 色达县| 镇安县| 凭祥市| 寻乌县| 民县| 中阳县| 内丘县| 鲁甸县| 大悟县| 长宁区| 镇坪县| 和平区| 洪雅县| 满城县| 团风县| 美姑县| 金堂县| 同仁县| 英吉沙县| 延津县| 惠来县| 石泉县| 玉树县| 措美县| 车险| 多伦县| 周至县| 科尔| 玉树县| 巴塘县| 本溪市| 土默特左旗| 香格里拉县| 双流县| 和顺县|