C#中代理机制练习

原创 2013年12月03日 21:33:16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace DelegateDemo01
{
    class BubbleSorter
    {
        public static void Sort<T>(IList<T> sortArray,Func<T,T,bool>comarison){
            bool swapped = true;
            do{
                swapped = false;
                for (int i = 0; i < sortArray.Count - 1;i++ ) {
                if(comarison(sortArray[i+1],sortArray[i])){
                    T temp = sortArray[i];
                    sortArray[i] = sortArray[i + 1];
                    sortArray[i + 1] = temp;
                    swapped = true;
                }
                }
            }while(swapped);
        
        }
    }

}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace DelegateDemo01
{
    class Employee
    {
        //字段
        private string name;
        private decimal salary;
        //封装属性
        public string Name {
            get {
                return name;
            }
           private set {
                name = value;
            }
        }
        public decimal Salary {
            get {
                return salary;
            }
         private set {
                salary = value;
            }
        }
        //构造方法
        public Employee() { }
        public Employee(string name,decimal salary) {
            this.name = name;
            this.salary = salary;
        }
        //重写父类的ToString 方法
        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;
        }


    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace DelegateDemo01
{
    class Program
    {
       //定义委托类型。没有方法体
        private delegate string GetString();
        delegate double DoubleOp(double x);
        //实例化委托类型,作为参数传入方法中
        static void ProcessAndDisplayNumber(DoubleOp action,double value) {
            double result = action(value);
            Console.WriteLine("Value is {0},result of operation is {1}",value,result);
        
        }
        static void Main(string[] args)
        {
            int x = 20;
            //实例化委托类型,传入方法参数
            GetString getstr = new GetString(x.ToString);
            Console.WriteLine("委托结果:"+getstr());


            //委托数组使用
            DoubleOp[] doubleop = { 
                                  MathOperation.MultiplyByTwo,
                                  MathOperation.Square
                                  };


            for (int i = 0; i < doubleop.Length;i++ ) {
                Console.WriteLine("Using operations {0}:",i);
                ProcessAndDisplayNumber(doubleop[i],2.0);
                ProcessAndDisplayNumber(doubleop[i],3.45);
                ProcessAndDisplayNumber(doubleop[i],445.23);
                Console.WriteLine();
            
            }


            //委托的经典使用,冒泡排序
            Employee[] employee = { 
                                 new Employee("zhangsan",22222),
                                 new Employee("lisi",33212),
                                 new Employee("wanger",23444),
                                 new Employee("wanghai",33221)                                 
                                  };
            BubbleSorter.Sort(employee,Employee.CompareSalary);
            foreach(Employee em in employee){
                Console.WriteLine(em);
            }
            Console.ReadKey();
        }
    }
}

相关文章推荐

sql2005常用sql语句(一)

1、查询“”课程比“”课程成绩高的所有学生的学号;   SELECT a.S# FROM (SELECT s#,score FROM SC WHERE C#='001') a,  (SELECT ...

使用UDP发送数据简单实现

UDP 是无连接传输协议,所以不需要在发送和接收数据前建立远程主机连接.但是需要远程主机绑定一个端口进行监听是否是有发送端的IP和端口发送来的。发送端同样要绑定一个端口向远程IP地址的一个端口发送数据...

JAVA反射机制和动态代理PDF

  • 2012年12月13日 14:55
  • 263KB
  • 下载

JAVA动态代理机制

  • 2007年09月24日 04:06
  • 10KB
  • 下载

hadoop的用户代理机制

hadoop的用户代理机制官方文档解读参考Proxy user - Superusers Acting On Behalf Of Other Users。在hadoop的core-site.xml中进...

AOP动态代理(反射机制)

  • 2011年06月30日 11:19
  • 213KB
  • 下载

java动态代理反射机制

  • 2014年03月03日 18:29
  • 5KB
  • 下载

WebCollector多代理切换机制

使用同一IP长期爬取网站容易被网站的反爬虫机制封杀IP。爬虫往往使用多代理的方法来应对反爬虫机制。 本教程利用WebCollector爬取大众点评,展示WebCollector的多代理切换机制,相关内...
  • AJAXHu
  • AJAXHu
  • 2015年04月26日 20:58
  • 4240

JAVA的反射机制与动态代理

  • 2012年09月17日 11:15
  • 214KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#中代理机制练习
举报原因:
原因补充:

(最多只允许输入30个字)