泛型List<T>使用示例
代码来源于"c#高级编程(第4版)",略作修改
运行结果:
1
using System;
2
using System.Collections;
3
using System.Collections.Generic;
4
using System.Text;
5
6
7
namespace Wrox.ProCSharp.VectorAsCollection
8
{
9
class MainEntryPoint
10
{
11
static void Main(string[] args)
12
{
13
14
List<Racer> racers = new List<Racer>();
15
racers.Add(new Racer("Michael Schumacher", "Ferriai"));
16
racers.Add(new Racer("Juan Pablo Montoya", "McLaren-Mercedes"));
17
racers.Add(new Racer("Kimi Railkkonen", "McLaren-Mercedes"));
18
racers.Add(new Racer("Mark Webber", "Williams-BMW"));
19
racers.Add(new Racer("Rubens Barichello", "Ferriai"));
20
21
//遍历List
22
foreach (Racer R in racers)
23
{
24
Console.WriteLine(R);
25
}
26
27
Console.WriteLine("\n----------FindAll Method Demo-------------\n");
28
29
//查找findAll
30
FindRacer finder = new FindRacer("Ferriai");
31
foreach (Racer r in racers.FindAll(new Predicate<Racer>(finder.DrivingCarPredicate)))//Predicate是一个泛型的委托
32
//foreach (Racer r in racers.FindAll(new Predicate<Racer>(FindFerriai)))//就本例而言,查找开Farriai的Racer,也可以这样写,但这样不灵活,没办法将参数传入委托
33
{
34
Console.WriteLine(r);
35
}
36
37
Console.WriteLine("\n----------Find Method Demo-------------");
38
//Find方法(若找到的结果不止一条时,显示第一条)
39
FindRacer f2 = new FindRacer("McLaren-Mercedes");
40
41
Racer R2 = racers.Find(new Predicate<Racer>(f2.DrivingCarPredicate));
42
43
if (R2 != null)
44
{
45
Console.WriteLine(R2);
46
}
47
else
48
{
49
Console.WriteLine("No racer drive McLaren-Mercedes ");
50
}
51
52
Console.WriteLine("\n----------FindLast Method Demo-------------");
53
FindRacer f3 = new FindRacer("McLaren-Mercedes");
54
55
Racer R3 = racers.FindLast(new Predicate<Racer>(f2.DrivingCarPredicate));
56
57
if (R3 != null)
58
{
59
Console.WriteLine(R3);
60
}
61
else
62
{
63
Console.WriteLine("No racer drive McLaren-Mercedes ");
64
}
65
66
Console.ReadLine();
67
}
68
69
70
//static bool FindFerriai(Racer R)
71
//{
72
// return R.Car == "Ferriai";
73
//}
74
75
76
}
77
78
79
/**/
80
/// <summary>
81
/// 查找Racer的类(根据car查找)
82
/// </summary>
83
public class FindRacer
84
{
85
private string _car;
86
public FindRacer(string car)
87
{
88
this._car = car;
89
}
90
91
public bool DrivingCarPredicate(Racer r)
92
{
93
return r.Car == _car;
94
}
95
}
96
97
/**/
98
/// <summary>
99
/// Racer类
100
/// </summary>
101
public class Racer
102
{
103
private string _name;
104
public string Name
105
{
106
get
107
{
108
return _name;
109
}
110
}
111
112
private string _car;
113
public string Car
114
{
115
get
116
{
117
return _car;
118
}
119
}
120
121
public Racer(string name, string car)
122
{
123
this._name = name;
124
this._car = car;
125
}
126
127
public override string ToString()
128
{
129
return _name + "," + _car;
130
}
131
132
}
133
}
using System;2
using System.Collections;3
using System.Collections.Generic;4
using System.Text;5

6

7
namespace Wrox.ProCSharp.VectorAsCollection8
{9
class MainEntryPoint10
{11
static void Main(string[] args)12
{13

14
List<Racer> racers = new List<Racer>();15
racers.Add(new Racer("Michael Schumacher", "Ferriai"));16
racers.Add(new Racer("Juan Pablo Montoya", "McLaren-Mercedes"));17
racers.Add(new Racer("Kimi Railkkonen", "McLaren-Mercedes"));18
racers.Add(new Racer("Mark Webber", "Williams-BMW"));19
racers.Add(new Racer("Rubens Barichello", "Ferriai"));20

21
//遍历List22
foreach (Racer R in racers)23
{24
Console.WriteLine(R);25
}26

27
Console.WriteLine("\n----------FindAll Method Demo-------------\n");28

29
//查找findAll30
FindRacer finder = new FindRacer("Ferriai");31
foreach (Racer r in racers.FindAll(new Predicate<Racer>(finder.DrivingCarPredicate)))//Predicate是一个泛型的委托32
//foreach (Racer r in racers.FindAll(new Predicate<Racer>(FindFerriai)))//就本例而言,查找开Farriai的Racer,也可以这样写,但这样不灵活,没办法将参数传入委托33
{34
Console.WriteLine(r);35
}36

37
Console.WriteLine("\n----------Find Method Demo-------------");38
//Find方法(若找到的结果不止一条时,显示第一条)39
FindRacer f2 = new FindRacer("McLaren-Mercedes");40

41
Racer R2 = racers.Find(new Predicate<Racer>(f2.DrivingCarPredicate));42

43
if (R2 != null)44
{45
Console.WriteLine(R2);46
}47
else48
{49
Console.WriteLine("No racer drive McLaren-Mercedes ");50
}51

52
Console.WriteLine("\n----------FindLast Method Demo-------------");53
FindRacer f3 = new FindRacer("McLaren-Mercedes");54

55
Racer R3 = racers.FindLast(new Predicate<Racer>(f2.DrivingCarPredicate));56

57
if (R3 != null)58
{59
Console.WriteLine(R3);60
}61
else62
{63
Console.WriteLine("No racer drive McLaren-Mercedes ");64
}65

66
Console.ReadLine();67
}68

69

70
//static bool FindFerriai(Racer R)71
//{72
// return R.Car == "Ferriai";73
//}74

75

76
}77

78

79
/**/80
/// <summary>81
/// 查找Racer的类(根据car查找)82
/// </summary>83
public class FindRacer84
{85
private string _car;86
public FindRacer(string car)87
{88
this._car = car;89
}90

91
public bool DrivingCarPredicate(Racer r)92
{93
return r.Car == _car;94
}95
}96

97
/**/98
/// <summary>99
/// Racer类100
/// </summary>101
public class Racer102
{103
private string _name;104
public string Name105
{106
get107
{108
return _name;109
}110
}111

112
private string _car;113
public string Car114
{115
get116
{117
return _car;118
}119
}120

121
public Racer(string name, string car)122
{123
this._name = name;124
this._car = car;125
}126

127
public override string ToString()128
{129
return _name + "," + _car;130
}131

132
}133
}运行结果:
Michael Schumacher,Ferriai
Juan Pablo Montoya,McLaren-Mercedes
Kimi Railkkonen,McLaren-Mercedes
Mark Webber,Williams-BMW
Rubens Barichello,Ferriai
----------FindAll Method Demo-------------
Michael Schumacher,Ferriai
Rubens Barichello,Ferriai
----------Find Method Demo-------------
Juan Pablo Montoya,McLaren-Mercedes
----------FindLast Method Demo-------------
Kimi Railkkonen,McLaren-Mercedes
作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


浙公网安备 33010602011771号