数组

排序
Person.cs
public class Person : IComparable<Person>
{
  public string FirstName { get; set; }
  public string LastName { get; set; }
  public override string ToString()
{
return String.Format("{0} {1}",FirstName, LastName);
}
  public int CompareTo(Person other)
{
if (other == null) throw new ArgumentNullException("other");
int result = this.LastName.CompareTo(other.LastName);
if (result == 0)
{
result = this.FirstName.CompareTo(other.FirstName);
}
return result;
}
}
 
PersonComparer.cs
public enum PersonCompareType
{
  FirstName,
  LastName
}

public class PersonComparer : IComparer<Person>
{
  private PersonCompareType compareType;
  public PersonComparer(PersonCompareType compareType)
  {
    this.compareType = compareType;
  }
public int Compare(Person x, Person y)
  {
    if (x == null) throw new ArgumentNullException("x");
    if (y == null) throw new ArgumentNullException("y");
    switch (compareType)
    {
      case PersonCompareType.FirstName:
        return x.FirstName.CompareTo(y.FirstName);
      case PersonCompareType.LastName:
        return x.LastName.CompareTo(y.LastName);
      default:
        throw new ArgumentException("unexpected compare type");
}
}
}
 
Program.cs
class Program
{
  static void Main()
  {
    SortNames();
Person[] persons = GetPersons();
SortPersons(persons);
Console.WriteLine();
SortUsingPersonComparer(persons);
Covariance(persons);
}

static void Covariance(object[] objects)
{
}

static void SortUsingPersonComparer(Person[] persons)
{
Array.Sort(persons, new PersonComparer(PersonCompareType.FirstName));
foreach (Person p in persons)
{
Console.WriteLine(p);
}
}

static Person[] GetPersons()
{
return new Person[] {
new Person { FirstName="Damon", LastName="Hill" },
new Person { FirstName="Niki", LastName="Lauda" },
new Person { FirstName="Ayrton", LastName="Senna" },
new Person { FirstName="Graham", LastName="Hill" }
};
}

static void SortPersons(Person[] persons)
{
Array.Sort(persons);
foreach (Person p in persons)
{
Console.WriteLine(p);
}
}
static void SortNames()
{
string[] names = {
"Christina Aguilera",
"Shakira",
"Beyonce",
"Gwen Stefani"
};
Array.Sort(names);
foreach (string name in names)
{
Console.WriteLine(name);
}
}
}
posted @ 2011-12-29 17:49  Nicholas1984  阅读(119)  评论(0)    收藏  举报