• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#中委托用法实例详解

C#中委托用法实例详解

作者:pythoner 字体:[增加 减小] 来源:互联网 时间:2017-05-28

pythoner 通过本文主要向大家介绍了马桶c的个人空间,c语言,欲情 c max,维生素c,crh2c等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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("---------------");
    }
  }
}
</div>

希望本文所述对大家的C#程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#利用ReportViewer生成报表
  • C#基于正则去掉注释的方法示例
  • C#中new的用法及与override的区别分析
  • C#实现两个richtextbox控件滚动条同步滚动的简单方法
  • C# for循环的经典案例集锦
  • C#操作word的方法示例
  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法
  • C# WinForm制作异形窗体与控件的方法
  • C#实现Excel表数据导入Sql Server数据库中的方法
  • C#使用NPOI上传excel

相关文章

  • 2017-05-28c#动态类型,及动态对象的创建,合并2个对象,map实例
  • 2017-05-28C#使用round函数四舍五入的方法
  • 2017-05-28c#多线程的应用全面解析
  • 2017-05-28验证本机的excel版本的C#代码
  • 2017-05-28C#基础 延迟加载介绍与实例
  • 2017-05-28关于C#程序优化的五十种方法
  • 2017-05-28经典的委托排序(深入分析)
  • 2017-05-28利用thrift实现js与C#通讯的实例代码
  • 2017-05-28全面解读C#编程中的析构函数用法
  • 2017-05-28C#判断指定驱动器是否已经准备就绪的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#数组应用分析第1/2页
    • C#实现的24点游戏实例详解
    • C#实现TIF图像转PDF文件的方法
    • c#实现的操作oracle通用类
    • C#如何取硬件标志
    • C#中面向对象编程机制之继承学习笔记
    • C#特性 扩展方法
    • C#限速下载网络文件的方法实例
    • C#正则表达式获取下拉菜单(select)的相关属性值
    • C#连接mysql的方法【基于vs2010】

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有