c#中委托delegate浅析-1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace 委托1
{
    public delegate void mydelegate(mybook mb);//创建委托类型

    class Program
    {
        
        static void Main(string[] args)
        {
            BookDB myBD = new BookDB();
            mybook[] mbs = { new mybook("abc", 11), new mybook("x files", 22), new mybook("lost", 33) };
            foreach (mybook book in mbs)//初始化模拟数据库
            {
                myBD.AddBook(book);
            }
            mydelegate md = delegate(mybook mb) { Console.WriteLine(mb.BOOKNAME); };//创建匿名方法的委托
            myBD.processdelegate(md);//将委托传入执行
        }
    }
   public class mybook//声明一个mybook数据类型
    {

        private string bookname;
        private decimal bookprice;
        public string BOOKNAME
        {
            get { return bookname; }
            set { bookname = value; }
        }
        public decimal BOOKPRICE
        {
            get { return bookprice; }
            set { bookprice = value; }
        }
        public mybook(string bookname, decimal bookprice)
        {
            this.BOOKNAME = bookname;
            this.BOOKPRICE = bookprice;
        }

    }

   public class BookDB//声明一个mybook的模拟数据库
    {
        ArrayList mybooklist = new ArrayList();//以arrarylist模拟数据源
        public void AddBook(mybook book)
        {
            mybooklist.Add(book);
        }
        public void processdelegate(mydelegate md)//接受外部传入的代理方法
        {
            foreach (mybook book in mybooklist)
            {
                md(book);//遍历每个数据项,并执行代理方法
            }
        }
    }
}

以上代码实现外部的方法,通过委托传入数据类型内部执行~

 

1利用委托的好处之一就是可以让方法的功能和方法的执行分开

2只要方法符合委托的签名,那么可以定义任意的方法过程来实现结果

3可以选择不同的委托处理方式,实现数据的动态处理

posted @ 2012-06-04 21:44  MadKeX  阅读(363)  评论(0编辑  收藏  举报