• <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 閱讀(197) 評論(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 
            久久久99精品一区二区| 少妇久久久久久被弄高潮| 国产精品久久久久久久午夜片| 国内精品久久久久久久亚洲| 亚洲AV伊人久久青青草原| 久久永久免费人妻精品下载| 久久精品亚洲欧美日韩久久| 亚洲精品无码久久千人斩| 国产精品一区二区久久| 国产精品久久久久久吹潮| 久久人做人爽一区二区三区| 久久免费视频网站| 2021国产精品久久精品| 欧美久久综合性欧美| 久久妇女高潮几次MBA| 久久久久18| 国产精品久久国产精麻豆99网站 | 久久一本综合| 久久久精品国产sm调教网站| 亚洲&#228;v永久无码精品天堂久久 | 久久国产精品99久久久久久老狼 | 亚洲欧洲久久久精品| 久久96国产精品久久久| 久久天天躁狠狠躁夜夜网站| 亚洲精品无码久久不卡| 99久久精品国产综合一区| 久久国产高潮流白浆免费观看| 亚洲午夜无码久久久久小说| 国产精品免费久久久久久久久 | 久久精品国产只有精品66| 国产精品岛国久久久久| 国产成人精品久久二区二区| 亚洲色婷婷综合久久| 狠狠综合久久综合88亚洲 | 久久久久香蕉视频| 久久久久久青草大香综合精品| 国内精品久久久久久久久| 激情五月综合综合久久69| 久久国产高清字幕中文| 日本精品久久久久中文字幕8 | 欧美国产成人久久精品|