泛型List<T>使用示例
时间:2022-04-23
本文章向大家介绍泛型List<T>使用示例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
代码来源于"c#高级编程(第4版)",略作修改
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace Wrox.ProCSharp.VectorAsCollection
{
class MainEntryPoint
{
static void Main(string[] args)
{
List<Racer> racers = new List<Racer>();
racers.Add(new Racer("Michael Schumacher", "Ferriai"));
racers.Add(new Racer("Juan Pablo Montoya", "McLaren-Mercedes"));
racers.Add(new Racer("Kimi Railkkonen", "McLaren-Mercedes"));
racers.Add(new Racer("Mark Webber", "Williams-BMW"));
racers.Add(new Racer("Rubens Barichello", "Ferriai"));
//遍历List
foreach (Racer R in racers)
{
Console.WriteLine(R);
}
Console.WriteLine("n----------FindAll Method Demo-------------n");
//查找findAll
FindRacer finder = new FindRacer("Ferriai");
foreach (Racer r in racers.FindAll(new Predicate<Racer>(finder.DrivingCarPredicate)))//Predicate是一个泛型的委托
//foreach (Racer r in racers.FindAll(new Predicate<Racer>(FindFerriai)))//就本例而言,查找开Farriai的Racer,也可以这样写,但这样不灵活,没办法将参数传入委托
{
Console.WriteLine(r);
}
Console.WriteLine("n----------Find Method Demo-------------");
//Find方法(若找到的结果不止一条时,显示第一条)
FindRacer f2 = new FindRacer("McLaren-Mercedes");
Racer R2 = racers.Find(new Predicate<Racer>(f2.DrivingCarPredicate));
if (R2 != null)
{
Console.WriteLine(R2);
}
else
{
Console.WriteLine("No racer drive McLaren-Mercedes ");
}
Console.WriteLine("n----------FindLast Method Demo-------------");
FindRacer f3 = new FindRacer("McLaren-Mercedes");
Racer R3 = racers.FindLast(new Predicate<Racer>(f2.DrivingCarPredicate));
if (R3 != null)
{
Console.WriteLine(R3);
}
else
{
Console.WriteLine("No racer drive McLaren-Mercedes ");
}
Console.ReadLine();
}
//static bool FindFerriai(Racer R)
//{
// return R.Car == "Ferriai";
//}
}
/**/
/// <summary>
/// 查找Racer的类(根据car查找)
/// </summary>
public class FindRacer
{
private string _car;
public FindRacer(string car)
{
this._car = car;
}
public bool DrivingCarPredicate(Racer r)
{
return r.Car == _car;
}
}
/**/
/// <summary>
/// Racer类
/// </summary>
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;
}
}
}
运行结果:
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
- LSTM Networks在股票市场上的探究
- MSBuild的简单介绍与使用
- actionbar详解(二)
- actionbar完全解析(一)
- android galley实现画廊效果
- RavenDB:基于Windows/.NET平台的NoSQL数据库
- 神经网络算法交易:波动预测与定制损失函数
- 贝叶斯深度学习:桥接PyMC3和Lasagne构建层次神经网络
- How does it work in Mono's C# compiler?
- Cross-Origin Resource Sharing协议介绍
- 战斗民族开源神器ClickHouse:一款适合于构建量化回测研究系统的高性能列式数据库(二)
- Microsoft StreamInsight 构建物联网
- 利用 Microsoft StreamInsight 控制较大数据流
- HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 讲通C/C++预编译/条件编译指令 #ifdef,#ifndef,#endif,#define,…
- FreeRTOS静态和动态创建任务
- Jenkins部署Springboot项目
- atoi函数
- 网络字节
- redis学习(五)
- 编译报错原因
- 【Pod Terminating原因追踪系列之三】让docker事件处理罢工的cancel状态码
- C(string.h)字符串操作函数总结
- 指针与数组
- C语言字符串指针
- Http:GET和POST请求的区别
- 十六进制数组转换成ASCII码
- 解决ModuleNotFoundError: No module named ‘pip’问题
- 【FreeRTos】队列管理1