ylbtech-Unitity-CS:Delegates
| ylbtech-Unitity-CS:Delegates |
| 1.A,效果图返回顶部 |
Invoking delegate a:
Hello, A!
Invoking delegate b:
Goodbye, B!
Invoking delegate c:
Hello, C!
Goodbye, C!
Invoking delegate d:
Goodbye, D!
请按任意键继续. . .
| 1.B,源代码返回顶部 |
// bookstore.cs
using System; // 用于处理书店的一组类:
namespace Bookstore
{
using System.Collections; // 描述图书列表中的一本书:
public struct Book
{
public string Title; // 书名。
public string Author; // 作者。
public decimal Price; // 价格。
public bool Paperback; // 是否为平装本? public Book(string title, string author, decimal price, bool paperBack)
{
Title = title;
Author = author;
Price = price;
Paperback = paperBack;
}
} // 声明一个用于处理书的委托类型:
public delegate void ProcessBookDelegate(Book book); // 维护一个图书数据库。
public class BookDB
{
// 列出数据库中的所有图书:
ArrayList list = new ArrayList(); // 向数据库中添加图书:
public void AddBook(string title, string author, decimal price, bool paperBack)
{
list.Add(new Book(title, author, price, paperBack));
} // 对每本平装图书调用传入委托来进行处理:
public void ProcessPaperbackBooks(ProcessBookDelegate processBook)
{
foreach (Book b in list)
{
if (b.Paperback)
// 调用该委托:
processBook(b);
}
}
}
} // 使用 Bookstore 类:
namespace BookTestClient
{
using Bookstore; // 计算图书总价格和平均价格的类:
class PriceTotaller
{
int countBooks = ;
decimal priceBooks = 0.0m; internal void AddBookToTotal(Book book)
{
countBooks += ;
priceBooks += book.Price;
} internal decimal AveragePrice()
{
return priceBooks / countBooks;
}
} // 测尝试书数据库的类:
class Test
{
// 打印书名。
static void PrintTitle(Book b)
{
Console.WriteLine(" {0}", b.Title);
} // 下面开始执行。
static void Main()
{
BookDB bookDB = new BookDB(); // 用一些书初始化数据库:
AddBooks(bookDB); // 打印所有平装本的书名:
Console.WriteLine("Paperback Book Titles:");
// 创建一个与静态方法 Test.PrintTitle 关联的
// 新委托对象:
bookDB.ProcessPaperbackBooks(new ProcessBookDelegate(PrintTitle)); // 使用 PriceTotaller 对象
// 获取平装本的平均价格:
PriceTotaller totaller = new PriceTotaller();
// 创建一个与对象 totaller 的非静态方法
// AddBookToTotal 关联的新委托对象:
bookDB.ProcessPaperbackBooks(new ProcessBookDelegate(totaller.AddBookToTotal));
Console.WriteLine("Average Paperback Book Price: ${0:#.##}",
totaller.AveragePrice());
} // 用一些测尝试书初始化图书数据库:
static void AddBooks(BookDB bookDB)
{
bookDB.AddBook("The C Programming Language",
"Brian W. Kernighan and Dennis M. Ritchie", 19.95m, true);
bookDB.AddBook("The Unicode Standard 2.0",
"The Unicode Consortium", 39.95m, true);
bookDB.AddBook("The MS-DOS Encyclopedia",
"Ray Duncan", 129.95m, false);
bookDB.AddBook("Dogbert's Clues for the Clueless",
"Scott Adams", 12.00m, true);
}
}
}
| 1.B2,源代码返回顶部 |
// 版权所有(C) Microsoft Corporation。保留所有权利。
// 此代码的发布遵从
// Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款。
//
//版权所有(C) Microsoft Corporation。保留所有权利。 // compose.cs
using System; delegate void MyDelegate(string s); class MyClass
{
public static void Hello(string s)
{
Console.WriteLine(" Hello, {0}!", s);
} public static void Goodbye(string s)
{
Console.WriteLine(" Goodbye, {0}!", s);
} public static void Main()
{
MyDelegate a, b, c, d; // 创建引用 Hello 方法的
// 委托对象 a:
a = new MyDelegate(Hello);
// 创建引用 Goodbye 方法的
// 委托对象 b:
b = new MyDelegate(Goodbye);
// a 和 b 两个委托组成 c,
// c 将按顺序调用这两个方法:
c = a + b;
// 从组合委托中移除 a 而保留 d,
// 后者仅调用 Goodbye 方法:
d = c - a; Console.WriteLine("Invoking delegate a:");
a("A");
Console.WriteLine("Invoking delegate b:");
b("B");
Console.WriteLine("Invoking delegate c:");
c("C");
Console.WriteLine("Invoking delegate d:");
d("D");
}
}
| 1.C,下载地址返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
ylbtech-Unitity-CS:Delegates的更多相关文章
- 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, ...
- System.Net.WebRequest.cs
ylbtech-System.Net.WebRequest.cs 发出对统一资源标识符(URI)的请求.这是一个 abstract 类. 1.返回顶部 1. #region 程序集 System, V ...
随机推荐
- 嵌入式Linux开发——内容介绍与开发环境的搭建
嵌入式Linux开发步骤 设计自己的硬件系统 编写Bootloader 裁剪自己的Linux内核 开发移植设备驱动 构建根文件系统 开发应用程序 嵌入式Linux学习要点 熟练使用开发工具和相关指令集 ...
- c++时间处理
struct tm;这是一个结构体,包括了时间的各个属性年月日,时分秒 time(time_t * t);获取从1900年到现在经过的毫秒数,或者也可以这么用time_t t=time(NULL); ...
- How to drop a PostgreSQL database if there are active connections to it?
1.PostgreSQL 9.1 and below: SELECT pg_terminate_backend(pg_stat_activity.procpid) FROM pg_stat_activ ...
- PostgreSQL9.6新功能
PostgreSQL是世界上最先进的开源数据库,9.6最新版本由PostgreSQL全球开发者今天发布. 此版本将允许用户纵向扩展(scale-up)和横向扩展(scale-out)来提高数据库的查询 ...
- 开放平台-web实现人人网第三方登录
应用场景 web应用通过人人网登录授权实现第三方登录. 操作步骤 1 注册成为人人网开放平台开发者 http://app.renren.com/developer ...
- 003. 连接access数据库代码
1. 前端aspx中的代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="De ...
- 001. 为input type=text 时设置默认值
1. 前端HTML代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Defa ...
- linux概念之内存分析
linux内存总结 分析样本[root@-comecs ~]# free total used free shared buffers cached Mem: -/+ buffers/cache: S ...
- linux下为php安装APC扩展
wget http://pecl.php.net/get/APC-3.1.9.tgztar xzvf APC-3.1.9.tgzcd APC-3.1.9/usr/local/php/bin/phpiz ...
- PHP 5.6.11 访问SQL Server2008R2
PHP天生支持MySQL,但是有时候也想让它访问SQL Server,该怎么办呢? 最近找了点资料,测试成功了PHP访问SQLSvr的几种情况,限于时间,还没有测试更多不同环境,把测试过的记录如下: ...
