欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程语言 > c# >内容正文

c#

c#——《c#语言程序设计》实验报告——综合练习——委托、lambda表达式、linq、接口 -凯发ag旗舰厅登录网址下载

发布时间:2024/10/5 c# 39 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 c#——《c#语言程序设计》实验报告——综合练习——委托、lambda表达式、linq、接口 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、使用委托、lambda表达式、linq等知识完成以下内容:(本题35分)

(1)要求定义employee类,带有name属性(string类型),带有birthday属性(datetime类型),带有salary属性(double类型);重载tostring()方法,将信息以适当格式输出。[8分]

(2)定义一个委托如下 :

delegate bool employeepredicate(employee emp);

写一个静态方法findemployee,根据filter参数在数组中查找符合条件的person实例,方法声明为:[6分]

static list findemployee(employee[] emps, employeepredicate t)

(3)写一个静态方法filterbysalary,使之符合委托employeepredicate定义,当salary超过7000时返回true。[3分]

(4)在主方法中添加代码,结合(2)和(3),将工资超过7000的员工找出来并打印。[3分]

(5)编写一个静态类myextensions,其中有一个静态方法eighties,扩展datetime类型的功能。如日期符合“80后”定义则返回true,否则返回false。其中年份数据可通过 datetime的year属性访问到。[5分]

private static bool iseighties(datetime dt)

(6)利用(5)中扩展方法写一个lambda表达式,调用(2)中方法,把80后员工找出来并打印。[5分]

(7)利用linq技术,把80后员工找出来,按工资从高到低排序,并打印。[5分]

主方法中已提供以下代码和数据:

public static void main(string[] argv){employee[] employees = new employee[] {new employee { name = "damon", birthday = new datetime(1988, 5, 1), salary = 4000 },new employee { name = "niki", birthday = new datetime(1995, 10, 4), salary = 7500 },new employee { name= "ayrton", birthday = new datetime(1982, 6, 23), salary = 9200 },new employee { name= "graham", birthday = new datetime(1994, 9, 15), salary = 6800 }};}

2、array类的静态sort方法要求数组中的元素是可比较的。[16分]

1)扩展第1题中employee类的功能,使之实现泛型icomparable接口(其中定义了方法int compareto(t p)),按salary进行比较。(第1题中已答出的代码不需要重复写。)[4分]

2)如果需要以其它方式对employee对象进行排序,就需要自己创建一个类employeecomparer,实现泛型icomparer接口(其中定义了方法int compare(t a, t b)),它独立于要比较的类,因此需要两个参数进行比较。

写个一employeecomparer类,继承icomparer,内部包含一个整型sort属性。当sort为0时按salary进行比较,为1时按name排序,为2时按datetime排序。其中string类和datetime类均已实现icomparable接口。[8分]

3)在主方法中实现按salary和name的两种排序。[4分]

using system; using system.collections.generic; using system.linq;namespace homework20 {/**1、使用委托、lambda表达式、linq等知识完成以下内容:(本题35分)(1)要求定义employee类,带有name属性(string类型),带有birthday属性(datetime类型),带有salary属性(double类型);重载tostring()方法,将信息以适当格式输出。[8分](2)定义一个委托如下 :delegate bool employeepredicate(employee emp);写一个静态方法findemployee,根据filter参数在数组中查找符合条件的person实例,方法声明为:[6分]static list findemployee(employee[] emps, employeepredicate t)(3)写一个静态方法filterbysalary,使之符合委托employeepredicate定义,当salary超过7000时返回true。[3分](4)在主方法中添加代码,结合(2)和(3),将工资超过7000的员工找出来并打印。[3分](5)编写一个静态类myextensions,其中有一个静态方法eighties,扩展datetime类型的功能。如日期符合“80后”定义则返回true,否则返回false。其中年份数据可通过 datetime的year属性访问到。[5分]private static bool iseighties(datetime dt)(6)利用(5)中扩展方法写一个lambda表达式,调用(2)中方法,把80后员工找出来并打印。[5分](7)利用linq技术,把80后员工找出来,按工资从高到低排序,并打印。[5分]主方法中已提供以下代码和数据:public static void main(string[] argv){employee[] employees = new employee[] {new employee { name = "damon", birthday = new datetime(1988, 5, 1), salary = 4000 },new employee { name = "niki", birthday = new datetime(1995, 10, 4), salary = 7500 },new employee { name= "ayrton", birthday = new datetime(1982, 6, 23), salary = 9200 },new employee { name= "graham", birthday = new datetime(1994, 9, 15), salary = 6800 }};}*//**2、array类的静态sort方法要求数组中的元素是可比较的。[16分]1)扩展第1题中employee类的功能,使之实现泛型icomparable接口(其中定义了方法int compareto(t p)),按salary进行比较。(第1题中已答出的代码不需要重复写。)[4分]2)如果需要以其它方式对employee对象进行排序,就需要自己创建一个类employeecomparer,实现泛型icomparer接口(其中定义了方法int compare(t a, t b)),它独立于要比较的类,因此需要两个参数进行比较。写个一employeecomparer类,继承icomparer,内部包含一个整型sort属性。当sort为0时按salary进行比较,为1时按name排序,为2时按datetime排序。其中string类和datetime类均已实现icomparable接口。[8分]3)在主方法中实现按salary和name的两种排序。[4分]*/class employee : icomparable{public string name;public datetime birthday;public double salary;public override string tostring(){return string.format("{0}: salary={1}, birthday={2}", name, salary, birthday);}public int compareto(employee emp){return (int)(salary - emp.salary);}}public static class myextensions{public static bool iseighties(this datetime d){return d.year > 1979 && d.year < 1990;}}class employeecomparer : icomparer{public int sort { get; set; }public employeecomparer(int sort){sort = sort;}public int compare(employee e1, employee e2){switch (sort){case 0:return (int)(e1.salary - e1.salary);case 1:return e1.name.compareto(e2.name);default:return e1.birthday.compareto(e2.birthday);}}}class program{delegate bool employeepredicate(employee emp);static list findemployee(employee[] emps, employeepredicate t) {list results = new list();foreach (employee p in emps){if (t(p))results.add(p);}return results;}private static bool filterbysalary(employee emp) {return emp.salary > 7000;}public static void main(string[] args){employee[] employees = new employee[] {new employee { name = "damon", birthday = new datetime(1988, 5, 1), salary = 4000 },new employee { name = "niki", birthday = new datetime(1995, 10, 4), salary = 7500 },new employee { name= "ayrton", birthday = new datetime(1982, 6, 23), salary = 9200 },new employee { name= "graham", birthday = new datetime(1994, 9, 15), salary = 6800 }};list high = findemployee(employees, filterbysalary);foreach (employee emp in high)console.writeline(emp);list eighties = findemployee(employees, p => p.birthday.iseighties());foreach (employee emp in eighties)console.writeline(emp);var eighties2 = from emp in employeeswhere emp.birthday.iseighties() == trueorderby emp.salary descendingselect emp;foreach (employee emp in eighties2)console.writeline(emp);array.sort(employees);foreach (employee emp in employees)console.writeline(emp);array.sort(employees,new employeecomparer(1));foreach (employee emp in employees)console.writeline(emp);console.writeline("hello world!");}} } //1、 //(1)class employee{public string name { get; set; }public datetime birthday { get; set; }public double salary { get; set; }public override string tostring(){return string.format("{0}: salary={1}, birthday={2}", name, salary, birthday);}} //(2)private static list findemployee(employee[] ps, employeepredicate t){list results = new list();foreach (employee p in ps){if (t(p))results.add(p);}return results;} //(3)private static bool filterbysalary(employee emp){return emp.salary >= 7000;} //(4)list high = findemployee(employees, filterbysalary);foreach(employee emp in high)console.writeline(emp); //(5)public static class myextensions{public static bool iseighties(this datetime d){return d.year > 1979 && d.year < 1980;}} //(6)list eighties = findemployee(employees, p => p.birthday.iseighties());foreach(employee emp in eighties)console.writeline(emp); //(7)var eighties2 = from emp in employeeswhere emp.birthday.iseighties() == trueorderby emp.salary descendingselect emp;foreach (employee emp in eighties2)console.writeline(emp); //2、class employee : icomparable{public string name { get; set; }public datetime birthday { get; set; }public double salary { get; set; }public override string tostring(){return string.format("{0}: salary={1}, birthday={2}", name, salary, birthday);}public int compareto(employee emp){return (int)(salary - emp.salary);}}class employeecomparer : icomparer{public int sort { get; set; }public employeecomparer(int sort){sort = sort;}public int compare(employee e1, employee e2){switch(sort){case 0:return (int)(e1.salary - e1.salary);case 1:return e1.name.compareto(e2.name);default:return e1.birthday.compareto(e2.birthday);}}}

 

https://www.cnblogs.com/skm-blog/p/4229487.html

https://www.cnblogs.com/forever-ys/p/10315830.html

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的c#——《c#语言程序设计》实验报告——综合练习——委托、lambda表达式、linq、接口的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图