C#委托2

作者: 若水生花啊啊啊 | 来源:发表于2017-12-14 22:25 被阅读0次
class Program
    {
        static void Main(string[] args)
        {
            Employee[] employees =
            {
                new Employee("Bugs Bunny",20000),
                new Employee("Elmer Fudd",10000),
                new Employee("Daffy Duck",25000),
                new Employee("Wile Coyote",1000000.38m),
                new Employee("Foghorn Leghorn",23000),
                new Employee("RoadRunner",50000)
            };

            BubbleSorter.Sort<Employee>(employees,Employee.CompareSalary);
            foreach (var employee in employees)
            {
                Console.WriteLine(employee);
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
    public class BubbleSorter
    {
        static public void Sort<T>(IList<T> sortArray, Func<T, T, bool> comparison)
        {
            bool swapped = true;
            do
            {
                swapped = false;
                for (int i = 0; i < sortArray.Count-1; i++)
                {
                    if (comparison(sortArray[i + 1], sortArray[i]))
                    {
                        T temp = sortArray[i];
                        sortArray[i] = sortArray[i + 1];
                        sortArray[i + 1] = temp;
                        swapped = true;
                    }
                }
            } while (swapped);
        }
    }
    public class Employee
    {
        public Employee(string name, decimal salary)
        {
            this.Name = name;
            this.Salary = salary;
        }

        public string Name { get; private set; }
        public decimal Salary { get; private set; }

        public override string ToString()
        {
            return string.Format("{0},{1:C}",Name,Salary);
        }
        public static bool CompareSalary(Employee e1, Employee e2)
        {
            return e1.Salary < e2.Salary;
        }
    }

Func<T, T, bool> 是一个委托类型,最后一个类型表示返回的类型。
BubbleSorter.Sort<Employee>(employees,Employee.CompareSalary);这样写没有问题。
BubbleSorter.Sort(employees,Employee.CompareSalary);这样写也没有问题,编译器可以自动推断类型。

相关文章

  • C#委托2

    Func 是一个委托类型,最后一个类型表示返回的类型。BubbleSorter.Sort ...

  • 匿名委托Lambda表达式

    2种形式都是声明委托的形式 2.0以前 C# 命名方法是声明委托的唯一方法 C# 2.0 之后引入匿名方法 C#3...

  • C# 委托

    C#委托 C#中的委托(Delegate)类似于C或C++中函数的指针。委托(Delegate)是存有对某个方法的...

  • 教小明学一点点编程—C#篇(0)

    像小明这样使用C#的新同学,一定都会被C#的复杂的委托事件机制所困惑,那么我们不如解释一下什么是C#中委托。 委托...

  • C#委托 匿名函数 Lambda

    C# 中委托的发展#在 C# 1.0 中,通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例。 C#...

  • ToLua的Example示例学习笔记11_Delegate

    展示了Lua对C#中的委托类型的操作。 「1」代码 操作代码如下: c#代码如下: 「2」需要了解的部分 这个代码...

  • 2020-02-19

    C# 委托 (一)—— 委托、 泛型委托与Lambda表达式 原创wnvalentin 最后发布于2018-08-...

  • (转).NET面试题系列[7] - 委托与事件

    委托和事件 委托在C#中具有无比重要的地位。 C#中的委托可以说俯拾即是,从LINQ中的lambda表达式到(包括...

  • 委托及其用法

    C#委托使用详解(Delegates) 1. 委托是什么? 其实,我一直思考如何讲解委托,才能把委托说得更透彻。说...

  • C# 高级语言总结

    后续 1 C# 委托 委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 ...

网友评论

      本文标题:C#委托2

      本文链接:https://www.haomeiwen.com/subject/xtilwxtx.html