C#委托冒泡

委托的实现,就是编译器自行定义了一个类:有三个重要参数1.制定操作对象,2.指定委托方法3.委托链

看如下一个列子:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

class DelegatePratice

   {

       public static 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], sortArray[i + 1]))

                   {

                       T temp = sortArray[i];

                       sortArray[i] = sortArray[i + 1];

                       sortArray[i + 1] = temp;

                       swapped = true;

                   }

               }

           while (swapped);

          

       }

   }<br><br>定义实体类:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

class Employee

    {

        public Employee(string name, decimal salary)

        {

            this.Name = name;

            this.Salary = salary;

        }

        public string Name

        {

            get;

            set;

        }

        public decimal Salary

        {

            get;

            set;

        }

        /// <summary>

        /// 重写object的ToString方法

        /// </summary>

        /// <returns></returns>

        public override string ToString()

        {

            return string.Format("{0},{1:C}",Name,Salary);

        }

        

        /// <summary>

        /// 比较两员工的工资以此排序

        /// </summary>

        /// <param name="e1"></param>

        /// <param name="e2"></param>

        /// <returns></returns>

        public static bool Comparison(Employee e1, Employee e2)

        {

            return e1.Salary > e2.Salary;

        }

    }<br><br>

 调用


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

class Program

    {

        static void Main(string[] args)

        {

            Employee[] employees = { new Employee("simen", 5500), new Employee("shelly", 5900),

                new Employee("pool", 4300), new Employee("renata", 3800) };

            DelegatePratice.Sort(employees, Employee.Comparison);

            foreach (Employee employee in employees)

            {

                Console.WriteLine(employee);

            }

            Console.ReadKey();

        }

    }

}

时间: 2024-08-08 05:24:07

C#委托冒泡的相关文章

MDN——javascript——入门——第二章——知识点总结

If else Switch 三元运算符 (condition) ? run this code : run this code instead For循环 Break跳出循环 Continue跳出当前循环,继续下一循环 函数:重用代码块 匿名函数 1与事件绑定(匿名函数的主要作用) 2指定其为变量值(var a = function(){})但是最好不要用这种方式,最好的还是function a (){} 作用域与冲突 函数内定义的变量只在函数内起作用,即作用域是函数 思考创建函数库的想法.随

jquery的事件系统和缓存系统&amp;&amp; seajs

1, jquery的事件系统和缓存系统 事件的起因, 不能解除匿名函数 绑定: 给dom元素打上一个以版本随机号的标识, 比如1, 然后在 $.cache 上建立1的缓存对象, 如 $.cache.1.events, data; 从而引入缓存系统, 好处是只是在dom上标识下, 数据全在 $.cache 上, 而删除的时候会根据标识来删除cache, 会生成 cache[id] = { handle: 统一一个句柄, events: 事件集, data: 数据 } 事件空间,触发 由于有缓存对象

前端基础——常考内容

一..什么是原型,什么是原型链?以及原型对象的constructor属性 <JavaScript教程-网道> https://wangdoc.com/javascript/oop/prototype.html 1.原型 原型对象的所有属性和方法,都能被实例对象共享.也就是说,如果属性和方法定义在原型上,那么所有实例对象就能共享,不仅节省了内存,还体现了实例对象之间的联系. JavaScript 规定,每个函数都有一个prototype属性,指向一个对象. 对于普通函数来说,该属性基本无用.但是

JavaScript疑难杂症系列-事件

事件这块知识点虽然是老生长谈的,但对于我来说多多整理,多多感悟,温故知新,每次看看这块都有不同的收获.(在这里我不会长篇大论,只会挑重点;具体的小伙伴们自行查找) 什么是事件 在编程时系统内发生的动作或者发生的事情. 系统通过它来告诉编程者,在编程者愿意的情况下,编程者一某种方式对它做出回应. 添加事件方式 元素属性 var btn = document.querySelector('button'); btn.onclick = function() { var rndCol = 'rgb('

js事件冒泡和事件委托

js所谓的事件冒泡就是子级元素的某个事件被触发,它的上级元素的该事件也被递归执行 html: 1 <ul class="clearfix" data-type="cityPick"> 2 <li class="active_sort_opts" data-id="0">全部</li> 3 <li data-id="88">纽约</li> 4 <

事件捕获、冒泡、绑定、赋值、委托、兼容、滚轮

clientX/Y           可视区的鼠标坐标                  全兼容 offsetX/Y           鼠标坐标到物体边框的距离    IE+Chrome pageX/Y             页面                                    高级 浏览器 screenX/Y           屏幕                                    全兼容(没用) var e =  evt || window.

整理之DOM事件阶段、冒泡与捕获、事件委托、ie事件和dom模型事件、鼠标事件

整理之DOM事件阶段 本文主要解决的问题: 事件流 DOM事件流的三个阶段 先理解流的概念 在现今的JavaScript中随处可见.比如说React中的单向数据流,Node中的流,又或是今天本文所讲的DOM事件流.都是流的一种生动体现.用术语说流是对输入输出设备的抽象.以程序的角度说,流是具有方向的数据. 事件流分事件冒泡与事件捕获 在浏览器发展的过程中,开发团队遇到了一个问题.那就是页面中的哪一部分拥有特定的事件? 可以想象画在一张纸上的一组同心圆,如果你把手指放在圆心上,那么你的手指指向的其

JavaScript 详说事件机制之冒泡、捕获、传播、委托

DOM事件流(event  flow )存在三个阶段:事件捕获阶段.处于目标阶段.事件冒泡阶段. 事件捕获(dubbed  bubbling):通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从根节点开始由外到内进行事件传播,即点击了子元素,如果父元素通过事件捕获方式注册了对应的事件的话,会先触发父元素绑定的事件. 事件冒泡(event  capturing):与事件捕获恰恰相反,事件冒泡顺序是由内到外进行事件传播,直到根节点. 无论是事件捕获还是事件冒泡,它们都有一个共同的行为,就是事

JavaScript和JQuery中的事件\委托链\事件冒泡\事件捕获,兼容所有浏览器

有做过北大青鸟培训讲师经验的我,如今在一家公司做技术部经理的职位,发现有很多程序员的基本功相当糟糕,在组织企业内部培训时讲解了一些案例,总结了一些经典代码,希望对自己和有需要的人提供一些帮助吧: JavaScript版本: DOM0事件不支持委托链 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="C