日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

委托概念

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 委托概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
委托一直以來是一個比較不好理解的概念.如果從用途上思考的話,會好理解一些.如果要實現一個方法的重載,我們可以根據參數個數,及類型去區別.但參數個數與類型相同時,就不能用重載了.這時可用委托.

重載(OverLoad):

在.NET1.1下,我們定義重載:類中定義的方法可能有不同的版本,它具有如下的特征:

I.?????????? 方法名必須相同

II.???????? 參數列表必須不相同,與參數列表的順序無關

III.?????? 返回值類型可以不相同

覆寫(Override

在.NET1.1下,對覆寫我們的定義是:子類中為滿足自己的需要來重復定義某個方法的不同實現,它具有如下特征:

I.?????????? 通過使用關鍵字Override來覆寫

II.???????? 只有虛方法和抽象方法直接可以被覆寫

III.?????? 相同的方法名

IV.?????? 相同的參數列表

V.???????? 相同的返回值類型

一個使用委托的示例程序:

委托示例
?1using?System;
?2using?System.Collections.Generic;
?3using?System.Text;
?4
?5namespace?DelegateSample1
?6{
?7????//定義委托方法
?8????delegate?decimal?CalculateBonus(decimal?sales);
?9
10????class?Employee?{?
11????????public?string?name;
12????????public?decimal?sales;
13????????public?decimal?bonus;
14????????public?CalculateBonus?getBonus;
15????}

16
17????class?Program
18????{
19????????static?decimal?standardBonus(decimal?sales)?{
20????????????return?sales?/?10;
21????????}

22
23????????static?void?Main(string[]?args)
24????????{
25????????????decimal?multiplier?=?2;
26????????????//命名委托
27????????????CalculateBonus?getBonus1?=?new?CalculateBonus(standardBonus);
28????????????//匿名委托
29????????????CalculateBonus?getBonus2?=?delegate(decimal?sales)
30????????????{
31????????????????return?(multiplier?+?sales?/?10);
32????????????}
;
33
34????????????Employee[]?staff?=?new?Employee[3];
35????????????for?(int?i?=?0;?i?<?staff.Length;?i++)
36????????????????staff[i]?=?new?Employee();
37
38????????????staff[0].name?=?"Mr?Apple";
39????????????staff[0].sales?=?1000;
40????????????staff[0].getBonus?=?getBonus1;
41
42????????????staff[1].name?=?"Ms?Banana";
43????????????staff[1].sales?=?500;
44????????????staff[1].getBonus?=?getBonus1;
45
46????????????staff[2].name?=?"Ms?Cheng";
47????????????staff[2].sales?=?800;
48????????????staff[2].getBonus?=?getBonus2;
49
50????????????foreach?(Employee?sta?in?staff)
51????????????????performBonusCalculate(sta);
52
53????????????foreach(Employee?sta?in?staff){
54????????????????Console.WriteLine("Name?:?{0}",sta.name);
55????????????????Console.WriteLine("Sales?:?{0}",?sta.sales);
56????????????????Console.WriteLine("Bonus?:?{0}",?sta.bonus);
57????????????????Console.WriteLine("----------------------");
58????????????}

59????????}

60
61????????public?static?void?performBonusCalculate(Employee?sta)?{
62????????????sta.bonus?=?sta.getBonus(sta.sales);
63????????}

64????}

65}

66

轉載于:https://www.cnblogs.com/coderdream/archive/2007/04/13/711754.html

總結

以上是生活随笔為你收集整理的委托概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。