数组
排序
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);
}
}
}

浙公网安备 33010602011771号