• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            我希望你是我獨家記憶

            一段永遠封存的記憶,隨風而去
            posts - 263, comments - 31, trackbacks - 0, articles - 3
               :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

            委托實例

            Posted on 2009-07-30 14:09 Hero 閱讀(201) 評論(0)  編輯 收藏 引用 所屬分類: C#積累
              1 // bookstore.cs
              2 using System;
              3 
              4 // 用于處理書店的一組類:
              5 namespace Bookstore 
              6 {
              7    using System.Collections;
              8 
              9    // 描述圖書列表中的一本書:
             10    public struct Book
             11    {
             12       public string Title;        // 書名。
             13       public string Author;       // 作者。
             14       public decimal Price;       // 價格。
             15       public bool Paperback;      // 是平裝本嗎?
             16 
             17       public Book(string title, string author, decimal price, bool paperBack)
             18       {
             19          Title = title;
             20          Author = author;
             21          Price = price;
             22          Paperback = paperBack;
             23       }
             24    }
             25 
             26    // 聲明一個用于處理書的委托類型:
             27    public delegate void ProcessBookDelegate(Book book);
             28 
             29    // 維護一個圖書數據庫。
             30    public class BookDB
             31    {
             32       // 列出數據庫中的所有圖書:
             33       ArrayList list = new ArrayList();   
             34 
             35       // 向數據庫中添加圖書:
             36       public void AddBook(string title, string author, decimal price, bool paperBack)
             37       {
             38          list.Add(new Book(title, author, price, paperBack));
             39       }
             40 
             41       // 對每本平裝圖書調用傳入委托來進行處理: 
             42       public void ProcessPaperbackBooks(ProcessBookDelegate processBook)
             43       {
             44          foreach (Book b in list) 
             45          {
             46             if (b.Paperback)
             47             // 調用該委托:
             48                processBook(b);
             49          }
             50       }
             51    }
             52 }
             53 
             54 // 使用 Bookstore 類:
             55 namespace BookTestClient
             56 {
             57    using Bookstore;
             58 
             59    // 計算圖書總價格和平均價格的類:
             60    class PriceTotaller
             61    {
             62       int countBooks = 0;
             63       decimal priceBooks = 0.0m;
             64 
             65       internal void AddBookToTotal(Book book)
             66       {
             67          countBooks += 1;
             68          priceBooks += book.Price;
             69       }
             70 
             71       internal decimal AveragePrice()
             72       {
             73          return priceBooks / countBooks;
             74       }
             75    }
             76 
             77    // 測試圖書數據庫的類:
             78    class Test
             79    {
             80       // 打印書名。
             81       static void PrintTitle(Book b)
             82       {
             83          Console.WriteLine("   {0}", b.Title);
             84       }
             85 
             86       // 下面開始執行。
             87       static void Main()
             88       {
             89          BookDB bookDB = new BookDB();
             90 
             91          // 用一些書初始化數據庫:
             92          AddBooks(bookDB);      
             93 
             94          // 打印所有平裝本的書名:
             95          Console.WriteLine("Paperback Book Titles:");
             96          // 創建一個與靜態方法 Test.PrintTitle 關聯的
             97          // 新委托對象:
             98          bookDB.ProcessPaperbackBooks(new ProcessBookDelegate(PrintTitle));
             99 
            100          // 使用 PriceTotaller 對象
            101          // 獲取平裝本的平均價格:
            102          PriceTotaller totaller = new PriceTotaller();
            103          // 創建一個與對象 totaller 的非靜態方法
            104          // AddBookToTotal 關聯的新委托對象:
            105          bookDB.ProcessPaperbackBooks(new ProcessBookDelegate(totaller.AddBookToTotal));
            106          Console.WriteLine("Average Paperback Book Price: ${0:#.##}",
            107             totaller.AveragePrice());
            108       }
            109 
            110       // 用一些測試圖書初始化圖書數據庫:
            111       static void AddBooks(BookDB bookDB)
            112       {
            113          bookDB.AddBook("The C Programming Language"
            114             "Brian W. Kernighan and Dennis M. Ritchie"19.95mtrue);
            115          bookDB.AddBook("The Unicode Standard 2.0"
            116             "The Unicode Consortium"39.95mtrue);
            117          bookDB.AddBook("The MS-DOS Encyclopedia"
            118             "Ray Duncan"129.95mfalse);
            119          bookDB.AddBook("Dogbert's Clues for the Clueless"
            120             "Scott Adams"12.00mtrue);
            121       }
            122    }
            123 }
            124 
            125 
            日本精品久久久久中文字幕8| 精品多毛少妇人妻AV免费久久| 一本色道久久88综合日韩精品| 日本高清无卡码一区二区久久| 亚洲国产精品无码久久一区二区 | 久久综合色区| 无码人妻久久一区二区三区蜜桃| 一本色道久久88—综合亚洲精品 | 久久国产影院| 亚洲中文字幕无码久久综合网| 久久精品国产免费| 久久天天躁夜夜躁狠狠| 嫩草影院久久国产精品| 伊人久久精品无码av一区| 91久久精品电影| 久久久久久亚洲Av无码精品专口| 久久这里只有精品视频99| 久久精品中文无码资源站| 亚洲欧洲久久久精品| 国内精品伊人久久久久网站| 久久偷看各类wc女厕嘘嘘| 尹人香蕉久久99天天拍| 青青国产成人久久91网| 久久精品麻豆日日躁夜夜躁| 精品国产乱码久久久久久呢| 欧美久久久久久精选9999| 久久久精品免费国产四虎| 丰满少妇人妻久久久久久| 久久99这里只有精品国产| 久久久久久av无码免费看大片| 亚洲国产精品婷婷久久| 国产精品久久国产精麻豆99网站| 国产精品99久久久精品无码| 久久精品国产AV一区二区三区| 久久伊人影视| 无码人妻久久一区二区三区蜜桃| 婷婷久久综合九色综合绿巨人| 久久香蕉国产线看观看猫咪?v| 久久久久无码中| 久久亚洲AV无码精品色午夜| 亚洲αv久久久噜噜噜噜噜|