《C#本质论》读书笔记(12)委托和Lambda表达式

时间:2021-07-14 02:13:08

12.1.委托概述 

12.1.2 委托的数据类型

为了减少重复代码数量,可以将比较方法作为参数传递给 BubbleSort()方法。此外,为了将方法作为参数传递,,必须有一个能够标识方法的数据类型——也就是委托。这里的委托类型是 ComparisonHandler 。

 c# 2.0之前的写法

class DelegateSample  

    {  

        static void Main(string[] args)  

        {  

            //int[] arr = { 10, 20, 30, 40, 50 };  

            int[] arr = { 50, 40, 30, 20, 10 };  

  

            ConsoleArr(arr);  

  

            ComparisonHandler wx = new ComparisonHandler(DelegateSample.IsTrue);  

            BubbleSort(arr, wx);  

      //C#2.0之前是这么写的

      //BubbleSort(arr, new ComparisonHandler(IsTrue));  

  

            ConsoleArr(arr);  

  

            Console.Read();  

        }  

  

        public delegate bool ComparisonHandler(int a, int b);  

  

        public static bool IsTrue(int a, int b)  

        {  

                return a > b;  

        }  

  

        public static void BubbleSort(int[] items, ComparisonHandler comparisonMethod)  

        {  

            int i;  

            int j;  

            int temp;  

            if (items == null)  

            {  

                return;  

            }  

            if (comparisonMethod == null)  

            {  

                throw new ArgumentNullException("comparisonMethod");  

            }