C#中拜托用法實例詳解。本站提示廣大學習愛好者:(C#中拜托用法實例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中拜托用法實例詳解正文
本文實例講述了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#法式設計有所贊助。