• <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 
            中文字幕亚洲综合久久菠萝蜜| 久久热这里只有精品在线观看| 亚洲精品99久久久久中文字幕| 久久久91精品国产一区二区三区 | 久久精品国产亚洲Aⅴ蜜臀色欲| 国产精品无码久久综合| 久久精品国产亚洲AV嫖农村妇女| 亚洲国产精品无码久久久蜜芽| 久久天天躁狠狠躁夜夜躁2014| 久久精品国产AV一区二区三区| 精品国产日韩久久亚洲| 午夜精品久久久久久影视riav| 国产偷久久久精品专区| 亚洲精品美女久久777777| 亚洲中文久久精品无码ww16| 久久综合色之久久综合| 99精品久久精品一区二区| 久久天堂AV综合合色蜜桃网| 囯产精品久久久久久久久蜜桃 | 欧美久久综合性欧美| 国产精品美女久久久久av爽| 国产精品久久久久久久| 久久国产精品国语对白| 久久香综合精品久久伊人| 九九99精品久久久久久| 久久亚洲天堂| 色综合久久最新中文字幕| 久久精品国产欧美日韩99热| 亚洲午夜久久久久久久久久| 精品无码久久久久国产动漫3d| 91精品国产综合久久四虎久久无码一级| 伊人久久大香线蕉成人| 国产一区二区三区久久| 久久久久久精品免费看SSS| 欧美激情精品久久久久| 亚洲精品无码久久久久久| 久久夜色撩人精品国产| 99久久精品国产综合一区| 亚洲精品无码成人片久久| 污污内射久久一区二区欧美日韩| 99久久精品国产免看国产一区|