熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

關於.NET的委托[2]

2013-11-13 12:16:48  來源: .NET編程 

   // 用以測試書籍數據庫的類:
   class Test
   {
      // 打印書籍題目的靜態方法
      static void PrintTitle(Book b)
      {
         ConsoleWriteLine(   {} bTitle);
      }

      // 程序執行的入口
      static void Main()
      {
         BookDB bookDB = new BookDB();

         // 用幾本書來輸初始化書籍數據庫:
         AddBooks(bookDB);     

         // 打印平裝書的題目:
         ConsoleWriteLine(Paperback Book Titles:);
           // 創建與靜態方法 TestPrintTitle 關聯的新的委托對象:
           bookDBProcessPaperbackBooks(new ProcessBookDelegate(PrintTitle));

         // 通過PriceTotaller的實例獲取平裝書的平均價格:
         PriceTotaller totaller = new PriceTotaller();
           // 創建與對象 totaller 上的非靜態方法 AddBookToTotal 關聯的新的委托對象:
           bookDBProcessPaperbackBooks(new ProcessBookDelegate(totallerAddBookToTotal));
         ConsoleWriteLine(平裝書的平均價格: ${:###}
            totallerAveragePrice());
      }

      // 向數據庫添加書以初始化書籍數據庫:
      static void AddBooks(BookDB bookDB)
      {
         bookDBAddBook(The C Programming Language
            Brian W Kernighan and Dennis M Ritchie m true);
         bookDBAddBook(The Unicode Standard
            The Unicode Consortium m true);
         bookDBAddBook(The MSDOS Encyclopedia
            Ray Duncan m false);
         bookDBAddBook(Dogberts Clues for the Clueless
            Scott Adams m true);
      }
   }
}

輸出
Paperback Book Titles:
   The C Programming Language
   The Unicode Standard
   Dogberts Clues for the Clueless
平裝書的平均價格: $
 

  聲明委托以下語句

  public delegate void ProcessBookDelegate(Book book);聲明一個新的委托類型每個委托類型都描述參數的數目和類型以及它可以封裝的方法的返回值類型每當需要一組新的參數類型或新的返回值類型時都必須聲明一個新的委托類型                                                           

  實例化委托   聲明了委托類型後必須創建委托對象並使之與特定方法關聯與所有其他對象類似新的委托對象用 new 表達式創建但是當創建委托時傳遞給 new 表達式的參數很特殊它的編寫類似於方法調用但沒有方法的參數下列語句                                             

  bookDBProcessPaperbackBooks(new ProcessBookDelegate(PrintTitle));創建與靜態方法 TestPrintTitle 關聯的新的委托對象下列語句 bookDBProcessPaperbackBooks(newProcessBookDelegate(totallerAddBookToTotal));創建與對象 totaller 上的非靜態方法 AddBookToTotal 關聯的新的委托對象在例子中新的委托對象都立即傳遞給 ProcessPaperbackBooks 方法 請注意一旦創建了委托它所關聯到的方法便永不改變委托對象不可改變 調用委托   創建委托對象後通常將委托對象傳遞給將調用該委托的其他代碼通過委托對象的名稱(後面跟著要傳遞給委托的參數括在括號內)調用委托對象下面是委托調用的示例 processBook(b);

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/15562.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.