ylbtech-Unitity-CS:AnonymousDelegates
| ylbtech-Unitity-CS:AnonymousDelegates |
| 1.A,效果图返回顶部 |
| 1.B,源代码返回顶部 |
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 / ;
} static void Main(string[] args)
{ // 奖金计算中用到的值。
// 注意: 此局部变量将变为“捕获的外部变量”。
decimal multiplier = ; // 将此委托定义为命名方法。
CalculateBonus standard_bonus = new CalculateBonus(CalculateStandardBonus); // 此委托是匿名的,没有命名方法。
// 它定义了一个备选的奖金计算算法。
CalculateBonus enhanced_bonus = delegate(decimal sales) { return multiplier * sales / ; }; // 声明一些 Employee 对象。
Employee[] staff = new Employee[]; // 填充 Employees 数组。
for (int i = ; i < ; i++)
staff[i] = new Employee(); // 将初始值赋给 Employees。
staff[].name = "Mr Apple";
staff[].sales = ;
staff[].calculation_algorithm = standard_bonus; staff[].name = "Ms Banana";
staff[].sales = ;
staff[].calculation_algorithm = standard_bonus; staff[].name = "Mr Cherry";
staff[].sales = ;
staff[].calculation_algorithm = standard_bonus; staff[].name = "Mr Date";
staff[].sales = ;
staff[].calculation_algorithm = enhanced_bonus; staff[].name = "Ms Elderberry";
staff[].sales = ;
staff[].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("---------------");
}
}
}
| 1.C,下载地址返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
ylbtech-Unitity-CS:AnonymousDelegates的更多相关文章
- ylbtech-LanguageSamples-AnonymousDelegates(匿名委托)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-AnonymousDelegates(匿名委托) 1.A,示例(Sample) 返回顶部 ...
- Class:DbConnectionManipulator.cs
ylbtech-Class:DbConnectionManipulator.cs 1.返回顶部 1.DbConnectionManipulator.cs using System; using Sys ...
- ASP.NET MVC:UrlHelper.cs
ylbtech-funcation-Utility: ASP.NET MVC:UrlHelper.cs 充当表示 ASP.NET Razor 页的类的基类. 1.UrlHelper 类返回顶部 1-1 ...
- ASP.NET MVC:WebPageBase.cs
ylbtech-funcation-Utility: ASP.NET MVC:WebPageBase.cs 充当表示 ASP.NET Razor 页的类的基类. 1.A,WebPageBase 抽象类 ...
- ASP.NET MVC:WebPageRenderingBase.cs
ylbtech-funcation-Utility: ASP.NET MVC:WebPageRenderingBase.cs 提供用于呈现使用 Razor 视图引擎的页的方法和属性. 1.A,WebP ...
- ASP.NET MVC:WebViewPage.cs
ylbtech-funcation-Utility: ASP.NET MVC:WebViewPage.cs 表示呈现使用 ASP.NET Razor 语法的视图所需的属性和方法. 1.A,WebVie ...
- Unitity 常用工具类
ylbtech-Unitity_C#: Unitity 常用代码 1.A,效果图返回顶部 1.B,源代码返回顶部 1,日期字符串 using System; using System.Xml; / ...
- Class-SP:Order.cs
ylbtech-Class-SP:Order.cs 1. 返回顶部 1.GoodsType.cs 货品类别 using System; using System.Collections.Generic ...
- System.Net.FtpWebRequest.cs
ylbtech-System.Net.FtpWebRequest.cs 实现文件传输协议(FTP)客户端. 1.返回顶部 1. #region 程序集 System, Version=4.0.0.0, ...
随机推荐
- Wireshark抓包实例分析TCP重复ACK与乱序
转载请在文首保留原文出处: EMC 中文支持论坛https://community.emc.com/go/chinese 介绍 TCP 的一大常见问题在于重复 ACK 与快速重传.这一现象的发生也是由 ...
- 自定义android程序一段时间无操作后的功能
项目中遇见一个这样的需求,就是当软件在一定时间没有操作时候需要弹出广告页面,当点击广告页面时又进行软件操作,也就是广告要在软件打开并且处于未操作状态才会出来. 方法一:用handler+onTouch ...
- 市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交
http://blog.csdn.net/cjr15233661143/article/details/19041165 市委组织部考核项目中需要录入原始数据,拿开发区的数据录入举例说明,见下图,需要 ...
- 给 input 中 type="text" 设置CSS样式
input[type="text"], input[type="password"] { border: 1px solid #ccc; paddi ...
- linux包之nc之nc命令
nc-1.84-22.el6.x86_64不用系统上提供的nc版本会有所不同,其提供的参数使用方法也略有差异 nc -v -w 1 192.168.2.10 -z 1-65535|grep succe ...
- Linux -RAID
转自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/25/3099464.html 硬盘类型 速度 SATA <150M/s S ...
- Oracle报错,ORA-28001: 口令已经失效
Oracle11G创建用户时缺省密码过期限制是180天(即6个月), 如果超过180天用户密码未做修改则该用户无法登录. Oracle公司是为了数据库的安全性默认在11G中引入了这个默认功能,但是这个 ...
- AngularJS_对象数组-filter-orderBy
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Java中的定时器Timer
java.util.Timer是一个实用工具类,该类用来调度一个线程,使线程可以在将来某一时刻开始执行. Java的Timer类可以调度一个线程运行一次,或定期运行. java.util.TimerT ...
- Oracle “CONNECT BY” 使用 [转]
Oracle “CONNECT BY”是层次查询子句,一般用于树状或者层次结果集的查询.其语法是: 1 [ START WITH condition ]2 CONNECT BY [ NOCYCLE ] ...
