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,源代码返回顶部
1.B.1,bookstore.cs

// 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.B.2,
1.B2,源代码返回顶部
1.B2.2,compose.cs

// 版权所有(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.B.2,
1.C,下载地址返回顶部
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

ylbtech-Unitity-CS:Delegates的更多相关文章

  1. Class:DbConnectionManipulator.cs

    ylbtech-Class:DbConnectionManipulator.cs 1.返回顶部 1.DbConnectionManipulator.cs using System; using Sys ...

  2. ASP.NET MVC:UrlHelper.cs

    ylbtech-funcation-Utility: ASP.NET MVC:UrlHelper.cs 充当表示 ASP.NET Razor 页的类的基类. 1.UrlHelper 类返回顶部 1-1 ...

  3. ASP.NET MVC:WebPageBase.cs

    ylbtech-funcation-Utility: ASP.NET MVC:WebPageBase.cs 充当表示 ASP.NET Razor 页的类的基类. 1.A,WebPageBase 抽象类 ...

  4. ASP.NET MVC:WebPageRenderingBase.cs

    ylbtech-funcation-Utility: ASP.NET MVC:WebPageRenderingBase.cs 提供用于呈现使用 Razor 视图引擎的页的方法和属性. 1.A,WebP ...

  5. ASP.NET MVC:WebViewPage.cs

    ylbtech-funcation-Utility: ASP.NET MVC:WebViewPage.cs 表示呈现使用 ASP.NET Razor 语法的视图所需的属性和方法. 1.A,WebVie ...

  6. Unitity 常用工具类

    ylbtech-Unitity_C#: Unitity 常用代码 1.A,效果图返回顶部   1.B,源代码返回顶部 1,日期字符串 using System; using System.Xml; / ...

  7. Class-SP:Order.cs

    ylbtech-Class-SP:Order.cs 1. 返回顶部 1.GoodsType.cs 货品类别 using System; using System.Collections.Generic ...

  8. System.Net.FtpWebRequest.cs

    ylbtech-System.Net.FtpWebRequest.cs 实现文件传输协议(FTP)客户端. 1.返回顶部 1. #region 程序集 System, Version=4.0.0.0, ...

  9. System.Net.WebRequest.cs

    ylbtech-System.Net.WebRequest.cs 发出对统一资源标识符(URI)的请求.这是一个 abstract 类. 1.返回顶部 1. #region 程序集 System, V ...

随机推荐

  1. [AC自动机]题目合计

    我只是想记一下最近写的题目而已喵~ 题解什么的才懒得写呢~ [poj 1625]Censored! 这题注意一个地方,就是输入数据中可能有 ASCII 大于 128 的情况,也就是说用 char 读入 ...

  2. java_stack

    栈是一种数据结构,它代表只能在某一端进行插入.删除操作的特殊线性表. 栈的最大特点是是后进先出(First In Last Out),对栈的操作主要是入栈和出栈,判断栈是否为空,计算栈的大小. 对栈而 ...

  3. Android开源项目第一篇——个性化控件(View)篇

    本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍Android上那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Ga ...

  4. ViewPager动态加载、删除页面

    很多人在网上说ViewPager的PagerAdapter.notifyDataSetChanged()无效.刚开始我也这样认为,甚至被误导以为是真理.   后来,找了一下,在PagerAdatpar ...

  5. Android 中使用自定义字体的方法

    1.Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace 2.在Android中可以引入其他字体 . <?xml version="1.0 ...

  6. 最大化 AIX 上的 Java 性能,第 1 部分: 基础

    http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf1.html 最大化 AIX 上的 Java 性能,第 ...

  7. HTML和JSON的数据交互-HTML模板

    直接上源码,原文http://www.zhangxinxu.com/wordpress/2012/09/javascript-html-json-template/ <!DOCTYPE html ...

  8. 如何面试程序员 zhuan zai

    zhuan zai  http://blog.csdn.net/cuibo1123/article/details/41931909aia 面试对于大多数开发人员来说是一项很基本的技能.一次失败的招聘 ...

  9. SQL中 EXCEPT、INTERSECT用法

    EXCEPT 返回两个结果集的差(即从左查询中返回右查询没有找到的所有非重复值). INTERSECT 返回 两个结果集的交集(即两个查询都返回的所有非重复值). UNION返回两个结果集的并集. 语 ...

  10. 转:Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)

    Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...