• <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    // 維護一個圖書數(shù)據(jù)庫。
             30    public class BookDB
             31    {
             32       // 列出數(shù)據(jù)庫中的所有圖書:
             33       ArrayList list = new ArrayList();   
             34 
             35       // 向數(shù)據(jù)庫中添加圖書:
             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    // 測試圖書數(shù)據(jù)庫的類:
             78    class Test
             79    {
             80       // 打印書名。
             81       static void PrintTitle(Book b)
             82       {
             83          Console.WriteLine("   {0}", b.Title);
             84       }
             85 
             86       // 下面開始執(zhí)行。
             87       static void Main()
             88       {
             89          BookDB bookDB = new BookDB();
             90 
             91          // 用一些書初始化數(shù)據(jù)庫:
             92          AddBooks(bookDB);      
             93 
             94          // 打印所有平裝本的書名:
             95          Console.WriteLine("Paperback Book Titles:");
             96          // 創(chuàng)建一個與靜態(tài)方法 Test.PrintTitle 關聯(lián)的
             97          // 新委托對象:
             98          bookDB.ProcessPaperbackBooks(new ProcessBookDelegate(PrintTitle));
             99 
            100          // 使用 PriceTotaller 對象
            101          // 獲取平裝本的平均價格:
            102          PriceTotaller totaller = new PriceTotaller();
            103          // 創(chuàng)建一個與對象 totaller 的非靜態(tài)方法
            104          // AddBookToTotal 關聯(lián)的新委托對象:
            105          bookDB.ProcessPaperbackBooks(new ProcessBookDelegate(totaller.AddBookToTotal));
            106          Console.WriteLine("Average Paperback Book Price: ${0:#.##}",
            107             totaller.AveragePrice());
            108       }
            109 
            110       // 用一些測試圖書初始化圖書數(shù)據(jù)庫:
            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 
            久久精品亚洲一区二区三区浴池 | 久久精品国产亚洲AV忘忧草18| 久久久久九九精品影院| 久久精品二区| 99999久久久久久亚洲| 久久嫩草影院免费看夜色| 欧美精品久久久久久久自慰| 成人a毛片久久免费播放| 无码精品久久久久久人妻中字| 国产高潮久久免费观看| 日韩精品久久无码中文字幕| 青青草国产97免久久费观看| 高清免费久久午夜精品| 久久天天躁夜夜躁狠狠躁2022 | 久久久久99精品成人片牛牛影视| 亚洲国产香蕉人人爽成AV片久久| 久久国产免费直播| 亚洲国产二区三区久久| 97香蕉久久夜色精品国产| 国产精品无码久久四虎| 精品无码久久久久国产| 国内精品伊人久久久久妇| 精品久久久无码中文字幕| 99久久99久久| 人妻精品久久无码专区精东影业| 免费一级做a爰片久久毛片潮| 青青草原1769久久免费播放| 99久久无码一区人妻a黑| 狠狠色丁香久久婷婷综合图片| 久久性精品| 久久综合成人网| 理论片午午伦夜理片久久| 国产叼嘿久久精品久久| 97久久精品人人做人人爽| 亚洲国产精品久久久久网站| 91精品国产综合久久精品| 潮喷大喷水系列无码久久精品| 亚洲va中文字幕无码久久| 中文字幕无码精品亚洲资源网久久| 精品熟女少妇aⅴ免费久久| 国产毛片久久久久久国产毛片|