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

首頁 > 編程 > C# > 正文

C#中委托用法實例詳解

2020-01-24 01:40:23
字體:
來源:轉載
供稿:網友

本文實例講述了C#中委托用法。分享給大家供大家參考。具體分析如下:

這里演示了如何使用匿名委托來計算員工的薪水獎金。使用匿名委托簡化了程序,因為無需再定義一個單獨的方法。
(-:The data for each employee is stored in an object containing personal details as well as a delegate that references the algorithm required to calculate the bonus.)=100%(每個員工的數據都存儲在一個對象中,該對象中包含了個人的詳細信息和一個引用了計算獎金所需算法的委托。:-) 通過以委托的方式定義算法,可以使用相同的方法來執行獎金計算,而與實際計算方式無關。另外需要注意的是,一個局部變量 multiplier 變成了已捕獲的外部變量,因為它在委托計算中被引用了。

// 版權所有 (C) Microsoft Corporation。保留所有權利。using System;using System.Collections.Generic;using System.Text;namespace AnonymousDelegate_Sample{  // 定義委托方法。  delegate decimal CalculateBonus(decimal sales);  // 定義一個 Employee 類型。  class Employee  {    public string name;    public decimal sales;    public decimal bonus;    public CalculateBonus calculation_algorithm;  }  class Program  {    // 此類將定義兩個執行計算的委托。    // 第一個是命名方法,第二個是匿名委托。    // 首先是命名方法。    // 該方法定義“獎金計算”算法的一個可能實現。    static decimal CalculateStandardBonus(decimal sales)    {      return sales / 10;    }    static void Main(string[] args)    {      // 獎金計算中用到的值。      // 注意:此局部變量將變為“捕獲的外部變量”。      decimal multiplier = 2;      // 將此委托定義為命名方法。      CalculateBonus standard_bonus = new CalculateBonus(CalculateStandardBonus);      // 此委托是匿名的,沒有命名方法。      // 它定義了一個備選的獎金計算算法。      CalculateBonus enhanced_bonus = delegate(decimal sales) { return multiplier * sales / 10; };      // 聲明一些 Employee 對象。      Employee[] staff = new Employee[5];      // 填充 Employees 數組。      for (int i = 0; i < 5; i++)        staff[i] = new Employee();      // 將初始值賦給 Employees。      staff[0].name = "Mr Apple";      staff[0].sales = 100;      staff[0].calculation_algorithm = standard_bonus;      staff[1].name = "Ms Banana";      staff[1].sales = 200;      staff[1].calculation_algorithm = standard_bonus;      staff[2].name = "Mr Cherry";      staff[2].sales = 300;      staff[2].calculation_algorithm = standard_bonus;      staff[3].name = "Mr Date";      staff[3].sales = 100;      staff[3].calculation_algorithm = enhanced_bonus;      staff[4].name = "Ms Elderberry";      staff[4].sales = 250;      staff[4].calculation_algorithm = enhanced_bonus;      // 計算所有 Employee 的獎金      foreach (Employee person in staff)        PerformBonusCalculation(person);      // 顯示所有 Employee 的詳細信息      foreach (Employee person in staff)        DisplayPersonDetails(person);    }    public static void PerformBonusCalculation(Employee person)    {      // 此方法使用存儲在 person 對象中的委托      // 來進行計算。      // 注意:此方法能夠識別乘數局部變量,盡管      // 該變量在此方法的范圍之外。      //該乘數變量是一個“捕獲的外部變量”。      person.bonus = person.calculation_algorithm(person.sales);    }    public static void DisplayPersonDetails(Employee person)    {      Console.WriteLine(person.name);      Console.WriteLine(person.bonus);      Console.WriteLine("---------------");    }  }}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 军事| 正定县| 咸阳市| 临潭县| 寿光市| 潼关县| 时尚| 潮安县| 定日县| 罗山县| 宜都市| 新田县| 武夷山市| 睢宁县| 金平| 定兴县| 台中市| 杭锦旗| 宜兰县| 靖边县| 曲靖市| 苍梧县| 泽州县| 炉霍县| 南开区| 荣昌县| 离岛区| 临城县| 达拉特旗| 贵州省| 遂宁市| 新津县| 丹寨县| 永丰县| 阜新市| 遂昌县| 子洲县| 资中县| 朔州市| 东明县| 瑞金市|