委托是回調函數的類型安全包裝
C#中的委托類似於C或C++中的函數指針
委托聲明定義一種類型
對於靜態方法
對於實例方法
如果你有一個委托對象和一組適當的參數
委托的一個有趣且有用的屬性是
到現在已經說得不少了
下面的示例中
// bookstore
using System;
//此命名空間中的幾個類用以維護書籍數據庫:
namespace Bookstore
using System
// 描述數據庫中每一本書具有的屬性:
public struct Book
public string Title; // 書的題目
public string Author; // 書的作者
public decimal Price; // 書的價格
public bool Paperback; // 是不是平裝書?
public Book(string title
Title = title;
Author = author;
Price = price;
Paperback = paperBack;
}
}
// 為處理平裝書的類聲明一個委托類型(delegate類型):
public delegate void ProcessBookDelegate(Book book);
// 維護書籍的數據庫
public class BookDB
// 數據庫中所有書籍的清單:
ArrayList list = new ArrayList();
// 向數據庫中添加一本書:
public void AddBook(string title
list
}
// 對於每一本平裝書調用ProcessBookDelegate這個委托
public void ProcessPaperbackBooks(ProcessBookDelegate processBook)
foreach (Book b in list)
if (b
// Calling the delegate:
processBook(b);
}
}
}
}
// 使用Bookstore命名空間裡的類:
namespace BookTestClient
using Bookstore;
// 具有統計平裝書並求出平裝書的平均價格功能的類:
class PriceTotaller
int countBooks =
decimal priceBooks =
internal void AddBookToTotal(Book book)
countBooks +=
priceBooks += book
}
internal decimal AveragePrice()
return priceBooks / countBooks;
}
}
[
From:http://tw.wingwit.com/Article/program/net/201311/15563.html