Generic
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class Generic
{
static void Main11(string[] args)
{
PrintAll2<int>(3);
PrintAll2<string>("c");
PrintAll2(4);
PrintAll2("d");
PrintAll2(5.5);
Console.ReadLine();
}
static void PrintAll2<T>(T x)
{
if (typeof(T) == typeof(int))
{
Console.WriteLine(x.ToString());
}
else if (typeof(T) == typeof(string))
{
Console.WriteLine(x);
}
else
{
Console.WriteLine("Error");
}
}
}
class Person : IComparable<Person>
{
private string _name; //姓名
private int _age; //年龄
//创建Person对象
public Person(string Name, int Age)
{
this._name = Name;
this._age = Age;
}
//姓名
public string Name
{
get { return _name; }
}
//年龄
public int Age
{
get { return _age; }
}
public int CompareTo(Person p) //定义默认比较规则在CompareTo方法 ,重载Interface IComparable
{
return this.Age - p.Age;
}
}
class NameComparer : IComparer<Person>
{
public static NameComparer Default = new NameComparer();
public int Compare(Person p1, Person p2)
{
return System.Collections.Comparer.Default.Compare(p1.Age, p2.Age);
}
}
class PersonPredicate
{
public static bool MidAge(Person p)
{
if (p.Age >= 40)
return true;
else
return false;
}
}
class Persons : List<Person>
{
//取得集合中所有人姓名
public string GetAllNames()
{
if (this.Count == 0)
return "";
string val = "";
foreach (Person p in this)
{
val += p.Name + ",";
}
return val.Substring(0, val.Length - 1);
}
}
class TestGeneric
{
static void Main11(string[] args)
{
Person p1 = new Person("张三", 30);
Person p2 = new Person("李四", 220);
Person p3 = new Person("王五", 150);
List<Person> persons = new List<Person>();
persons.Add(p1);
persons.Add(p2);
persons.Add(p3);
persons.Sort();
foreach (Person p in persons)
{
Console.WriteLine(p.Name); //输出次序为 "张三"、"王五" "李四"
}
persons.Sort(NameComparer.Default);
foreach (Person p in persons)
{
Console.WriteLine(p.Name); //输出次序为"李四"、"王五"、"张三"
}
Predicate<Person> MidAgePredicate = new Predicate<Person>(PersonPredicate.MidAge);
List<Person> MidAgePersons = persons.FindAll(MidAgePredicate);
foreach (Person p in MidAgePersons)
{
Console.WriteLine(p.Name); //输出"王五"
}
//Console.Write(Persons.GetAllNames()); //输出“张三,李四,王五”
}
}
}
posted on 2011-11-15 22:31 breakpoint 阅读(98) 评论(0) 编辑 收藏 举报