欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中委托用法實(shí)例詳解

 更新時(shí)間:2015年06月29日 12:39:34   作者:pythoner  
這篇文章主要介紹了C#中委托用法,以實(shí)例形式較為詳細(xì)的分析了C#中委托的概念與使用技巧,需要的朋友可以參考下

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

這里演示了如何使用匿名委托來計(jì)算員工的薪水獎(jiǎng)金。使用匿名委托簡化了程序,因?yàn)闊o需再定義一個(gè)單獨(dú)的方法。
(-: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%(每個(gè)員工的數(shù)據(jù)都存儲(chǔ)在一個(gè)對(duì)象中,該對(duì)象中包含了個(gè)人的詳細(xì)信息和一個(gè)引用了計(jì)算獎(jiǎng)金所需算法的委托。:-) 通過以委托的方式定義算法,可以使用相同的方法來執(zhí)行獎(jiǎng)金計(jì)算,而與實(shí)際計(jì)算方式無關(guān)。另外需要注意的是,一個(gè)局部變量 multiplier 變成了已捕獲的外部變量,因?yàn)樗谖杏?jì)算中被引用了。

// 版權(quán)所有 (C) Microsoft Corporation。保留所有權(quán)利。
using System;
using System.Collections.Generic;
using System.Text;
namespace AnonymousDelegate_Sample
{
  // 定義委托方法。
  delegate decimal CalculateBonus(decimal sales);
  // 定義一個(gè) Employee 類型。
  class Employee
  {
    public string name;
    public decimal sales;
    public decimal bonus;
    public CalculateBonus calculation_algorithm;
  }
  class Program
  {
    // 此類將定義兩個(gè)執(zhí)行計(jì)算的委托。
    // 第一個(gè)是命名方法,第二個(gè)是匿名委托。
    // 首先是命名方法。
    // 該方法定義“獎(jiǎng)金計(jì)算”算法的一個(gè)可能實(shí)現(xiàn)。
    static decimal CalculateStandardBonus(decimal sales)
    {
      return sales / 10;
    }
    static void Main(string[] args)
    {
      // 獎(jiǎng)金計(jì)算中用到的值。
      // 注意:此局部變量將變?yōu)椤安东@的外部變量”。
      decimal multiplier = 2;
      // 將此委托定義為命名方法。
      CalculateBonus standard_bonus = new CalculateBonus(CalculateStandardBonus);
      // 此委托是匿名的,沒有命名方法。
      // 它定義了一個(gè)備選的獎(jiǎng)金計(jì)算算法。
      CalculateBonus enhanced_bonus = delegate(decimal sales) { return multiplier * sales / 10; };
      // 聲明一些 Employee 對(duì)象。
      Employee[] staff = new Employee[5];
      // 填充 Employees 數(shù)組。
      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;
      // 計(jì)算所有 Employee 的獎(jiǎng)金
      foreach (Employee person in staff)
        PerformBonusCalculation(person);
      // 顯示所有 Employee 的詳細(xì)信息
      foreach (Employee person in staff)
        DisplayPersonDetails(person);
    }
    public static void PerformBonusCalculation(Employee person)
    {
      // 此方法使用存儲(chǔ)在 person 對(duì)象中的委托
      // 來進(jìn)行計(jì)算。
      // 注意:此方法能夠識(shí)別乘數(shù)局部變量,盡管
      // 該變量在此方法的范圍之外。
      //該乘數(shù)變量是一個(gè)“捕獲的外部變量”。
      person.bonus = person.calculation_algorithm(person.sales);
    }
    public static void DisplayPersonDetails(Employee person)
    {
      Console.WriteLine(person.name);
      Console.WriteLine(person.bonus);
      Console.WriteLine("---------------");
    }
  }
}

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論