委托与泛型

个人理解,一个是使方法可变,一个是使类型可变

//例1:委托

View Code
 static void Main(string[] args)

        {

            ShowMsg("msg", ShowFun1);

            ShowMsg("msg", ShowFun2);

            Console.ReadKey();

        }

        public delegate void DelegateShow(string msg);  //声明方法的参数

        public static void ShowFun1(string msg)  //具体方法

        {

            Console.WriteLine("ShowFun1:" + msg);

        }

        public static void ShowFun2(string msg)

        {

            Console.WriteLine("ShowFun2:" + msg);

        }

        public static void ShowMsg(string msg, DelegateShow fun)  //统一调用

        {

            fun(msg);

        }

 

//例2:加上泛型

View Code
static void Main(string[] args)

        {

            ShowMsg(new ShowClass1(), ShowFun1);

            ShowMsg(new ShowClass2(), ShowFun2);

            Console.ReadKey();

        }

        public delegate void DelegateShow<T>(T msg);  //声明方法的参数

        public static void ShowFun1<T>(T msg)  //具体方法

        {

            Console.WriteLine("ShowFun1:" + msg);

        }

        public static void ShowFun2<T>(T msg)

        {

            Console.WriteLine("ShowFun2:" + msg);

        }

        public static void ShowMsg<T>(T msg, DelegateShow<T> fun)  //统一调用

        {

            fun(msg);

        }



        public class ShowClass1

        {

            public override string ToString()

            {

                return "ShowClass1";

            }

        }

        public class ShowClass2

        {

            public override string ToString()

            {

                return "ShowClass2";

            }

        }

 

你可能感兴趣的:(泛型)