C#中的Array类使用泛型委托做参数
来源:互联网 发布:剑灵客户端优化 编辑:程序博客网 时间:2024/06/16 19:15
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace 泛型
- {
- class Array使用泛型委托
- {
- public static void Main()
- {
-
-
-
-
- Person[] pers = new Person[] { new Person( "zhao" , 15 ) , new Person( "aladdin" , 30 ) , new Person("jacky" , 20 )};
- Array.Sort<Person>( pers, (p1, p2) => p1.CompareTo( p2) );
- foreach (Person p in pers)
- {
- Console.WriteLine( p.name + "--" + p.age );
- }
-
-
-
-
-
- Array.ForEach<Person>( pers , Console.WriteLine );
-
- Array.ForEach<Person>(pers, param => Console.WriteLine(param.name + "--" + param.age));
-
-
-
-
-
- Person[] rePers = Array.FindAll<Person>(pers, par1 => par1.name.LastIndexOf('n') > 0) ;
- Console.WriteLine( "查找以n结尾的人");
- foreach (Person p in rePers)
- {
- Console.WriteLine( p.name );
- }
-
-
-
-
- Racer[] races = Array.ConvertAll<Person, Racer>(pers, (param1) => new Racer(param1.name));
- Console.WriteLine( "输出被转换的人");
- foreach (Racer r in races)
- {
- Console.WriteLine( r.name );
- }
- Console.ReadLine() ;
- }
- }
-
- class Person : IComparable
- {
- public string name;
- public int age;
- public Person(string name, int age)
- {
- this.name = name;
- this.age = age;
- }
- #region IComparable 成员
- public int CompareTo(object obj)
- {
- Person per = obj as Person;
- if (per != null)
- {
- if (this.age == per.age)
- {
- return 0;
- }
- else if (this.age > per.age)
- {
- return 1;
- }
- else
- {
- return -1;
- }
- }
- else
- {
- return -1;
- }
- }
- #endregion
- }
- class Racer
- {
- public string name;
- public Racer(string name)
- {
- this.name = name;
- }
- }
- }