本人初学泛型,先遇到一个问题不知如何去解,有请各位帮忙解答一下,唯有及时送分感谢:
源程序:
using System;
using System.Collections;
using System.Collections.Generic;namespace Test
{
public class Racer
{
private string name;
public string Name
{
get { return name; }
} private string car;
public string Car
{
get { return car; }
}
public Racer(string name, string car)
{
this.name = name;
this.car = car;
} public override string ToString()
{
return name + ", " + car;
} public static void Main()
{
List<Racer> racers = new List<Racer>()
{
new Racer("Michael Schumacher", "Ferrari"),
new Racer("Juan Pablo Montoya", "McLaren-Mercedes"),
new Racer("Kimi Raikkonen", "McLaren-Mercedes"),
new Racer("Mark Webber", "Williams-BMW"),
new Racer("Rubens Barichello", "Ferrari")
};
racers.Sort(new RacerComparer(RacerComparer.CompareType.Car));
foreach (Racer racer in racers)
{
Console.WriteLine(racer.ToString());
} Console.ReadLine();
}
} public class RacerComparer : IComparer<Racer>
{
public enum CompareType
{
Name,
Car
}
private CompareType compareType;
public RacerComparer(CompareType compareType)
{
this.compareType = compareType;
} public int Compare(Racer x, Racer y)
{
int result = 0;
switch (compareType)
{
case CompareType.Name:
result = x.Name.CompareTo(y.Name);
break;
case CompareType.Car:
result = x.Car.CompareTo(x.Car);
break;
}
return result;
}
}
}
已按照书上的讲解写出来了,可是为何显示的时候还不是按“Car”来排序的呢?
源程序:
using System;
using System.Collections;
using System.Collections.Generic;namespace Test
{
public class Racer
{
private string name;
public string Name
{
get { return name; }
} private string car;
public string Car
{
get { return car; }
}
public Racer(string name, string car)
{
this.name = name;
this.car = car;
} public override string ToString()
{
return name + ", " + car;
} public static void Main()
{
List<Racer> racers = new List<Racer>()
{
new Racer("Michael Schumacher", "Ferrari"),
new Racer("Juan Pablo Montoya", "McLaren-Mercedes"),
new Racer("Kimi Raikkonen", "McLaren-Mercedes"),
new Racer("Mark Webber", "Williams-BMW"),
new Racer("Rubens Barichello", "Ferrari")
};
racers.Sort(new RacerComparer(RacerComparer.CompareType.Car));
foreach (Racer racer in racers)
{
Console.WriteLine(racer.ToString());
} Console.ReadLine();
}
} public class RacerComparer : IComparer<Racer>
{
public enum CompareType
{
Name,
Car
}
private CompareType compareType;
public RacerComparer(CompareType compareType)
{
this.compareType = compareType;
} public int Compare(Racer x, Racer y)
{
int result = 0;
switch (compareType)
{
case CompareType.Name:
result = x.Name.CompareTo(y.Name);
break;
case CompareType.Car:
result = x.Car.CompareTo(x.Car);
break;
}
return result;
}
}
}
已按照书上的讲解写出来了,可是为何显示的时候还不是按“Car”来排序的呢?
解决方案 »
- ASP.NET 页面上有比较费时的查询,前台没有响应
- C# 在javascript 中取得session 呢???????
- 如何用C#读取SQL Analysis services的数据挖掘模型并显示在WEB页面上?高分赠英雄哦
- OracleDataAdapter.update问题!
- 假死机状况,怎么解决??
- c#怎样获得window系统的所有逻辑盘符
- C#中用什么控件解决数据库中一对多的关系?!谢谢!!
- 100分直至1000分求教?高手请进!!!
- 请各位高手赐教,图片上传和显示问题!(最好有原代码)谢谢!
- 讨论!请大家都关心关心这个问题,尤其是微软工程师和编程高手们?
- c# process.start()启动进程后无界面?
- C#窗体和控件背景图片问题
{
switch (compareType)
{
case CompareType.Name:
return x.Name.CompareTo(y.Name);
case CompareType.Car:
return x.Car.CompareTo(x.Car);
default:
return x.Name.CompareTo(y.Name);
}
}
另外,其实如果引用System.Linq命名空间之后代码可以写: racers.OrderBy(x => x.car)
.Where(x => { Console.WriteLine(x.ToString()); return false; })
.Count();