码迷,mamicode.com
首页 > Windows程序 > 详细

分分搞懂c#中的委托

时间:2015-12-22 23:00:09      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:

分分搞懂c#中的委托;

不说废话,不来虚的概念,不管代码是否有意义,看我的优化之路,你会理解委托了;

源代码1

public class test
    {
        //我们不管代码是否有意义,我们直接看代码重构和一步步优化的过程
        int flage = 1;
        public void show(int a)
        {
            if (flage == 1)
            {
                do1(a);
            }
            else if (flage == 2)
            {
                do2(a);
            }
            else if (flage == 3)
            {
                do3(a);
            }
            else if (flage == 4)
            {
                do4(a);
            }
            else
            {

            }

        }

        public void do1(int val)
        {
        }
        public void do2(int val)
        {

        }
        public void do3(int val)
        {

        }
        public void do4(int val)
        {

        }


    }

 优化一:

public enum flag
    {
        a = 1,
        b = 2,
        c = 3,
        d = 4
    }

    public class test2
    {
        //我们不管代码是否有意义,我们直接看代码重构和一步步优化的过程
        int flage = 1;
        public void show(int a, flag f)
        {
            switch (f)
            {
                case flag.a:
                    do1(a);
                    break;
                case flag.b:
                    do2(a);
                    break;
                case flag.c:
                    do3(a);
                    break;
                case flag.d:
                    do4(a);
                    break;
            }
        }

        public void do1(int val)
        {
        }
        public void do2(int val)
        {

        }
        public void do3(int val)
        {

        }
        public void do4(int val)
        {

        }


    }

优化二(委托“现身了”)

public delegate void mydelegate(int val);
    public class test3
    {
        public void show(int a,mydelegate de )
        {
            de(a);
        }

        public void do1(int val)
        {
        }
        public void do2(int val)
        {

        }
        public void do3(int val)
        {

        }
        public void do4(int val)
        {

        }


    }

    class Program
    {
        static void Main(string[] args)
        {
            test3 t = new test3();
            t.show(12,t.do2);
        }
    }
}

哈哈哈,这下明白了撒!

现在我们才来总结概念!

 

分分搞懂c#中的委托

标签:

原文地址:http://www.cnblogs.com/mc67/p/5068145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!