泛型集合List<T>
泛型最重要的应用就是集合操作,使用泛型集合可以提高代码重用性,类型安全和更佳的性能。
List<T>的用法和ArrayList相似,List<T>有更好的类型安全性,无须拆,装箱。定义一个List<T>泛型集合的语法如下:
List<T> 集合名=new List<T>();
在泛型定义中,泛型类型参数“<T>”是必须指定的,其中T是定义泛型类时的占位符,其并不是一种类型,仅代表某种可能的类型。在定义时T会被使用的类型代替。泛型集合List<T>中只能有一个参数类型,“<T>”中的T可以对集合中的元素类型进行约束。
注意:泛型集合必须实例化,实例化时和普通类实例化时相同,必须在后面加上“()”。
如定义一个学生类的List<T>,示例如下:
List<Student> students=new List<Student>();
List<T>添加、删除、检索元素的方法和ArrayList相似,明显的特点是不需要像ArrayList那样装箱和拆箱。
using System;
using System.Collections.Generic;
using System.Collections;
public class Student
{
public string Name
{
get;
set;
}
public string Number
{
get;
set;
}
public int Score
{
get;
set;
}
}
class Program
{
static void Main()
{
List < Student > students = new List < Student > ();
Student stu1 = new Student();
stu1.Name = "陆小凤";
stu1.Number = "0801";
stu1.Score = 20;
Student stu2 = new Student();
stu2.Name = "西门吹雪";
stu2.Number = "0802";
stu2.Score = 23;
students.Add(stu1);
students.Add(stu2);
Console.WriteLine("集合中的元素个数为{0}", students.Count);
foreach (Student stu in students)
{
Console.WriteLine("\t{0}\t{1}\t{2}", stu.Name, stu.Number, stu.Score);
}
students.Remove(stu1);
Console.WriteLine("集合中的元素个数为{0}", students.Count);
Console.ReadLine();
}
}
上面代码定义了Student类型的List<T>泛型集合,其中的T被数据类型Student代替,这样定义的集合只能存储Student类型的元素,保证了类型安全,遍历集合元素时,没有经过拆箱操作,提高了性能。
List<T>和ArrayList的区别
List<T>和ArrayList的相同点:添加元素、删除元素、通过索引访问元素方法相同。
List<T>和ArrayList的不同点:
ArrayList可以添加任意类型元素;List<T>对添加的元素具有类型约束;
ArratList添加时装箱,读取时拆箱;List<T>不需要装箱,拆箱操作;
我们再看一个例子:
using System;
using System.Collections;
using System.Collections.Generic;
class Person
{
private string _name; //姓名
private int _age; //年龄
//创建Person对象
public Person(string Name, int Age)
{
this._name = Name;
this._age = Age;
}
//姓名
public string Name
{
get
{
return _name;
}
}
//年龄
public int Age
{
get
{
return _age;
}
}
}
class Program
{
static void Main()
{
//创建Person对象
Person p1 = new Person("张三", 30);
Person p2 = new Person("李四", 20);
Person p3 = new Person("王五", 50);
//创建类型为Person的对象集合
List < Person > persons = new List < Person > ();
//将Person对象放入集合
persons.Add(p1);
persons.Add(p2);
persons.Add(p3);
//输出第2个人的姓名
Console.WriteLine(persons[1].Name);
foreach (Person p in persons)
{
Console.WriteLine("\t{0}\t{1}", p.Name, p.Age);
}
}
}
可以看到,泛型集合大大简化了集合的实现代码,通过它,可以轻松创建指定类型的集合。非但如此,泛型集合还提供了更加强大的功能,下面看看其中的排序及搜索。
以下利用泛型来实现COMBOX控件的数据加载
public class vendor
{
private string _UserCode;
private string _VendorDes;
public string VendorDes
{
get { return _VendorDes; }
set { _VendorDes = value; }
}
public string UserCode
{
get { return _UserCode; }
set { _UserCode = value; }
}
public vendor(string display, string value)
{
_VendorDes = display;
_UserCode = value;
}
public vendor() { }
}
/// <summary>
/// 取得供应商名称
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public List<Model.vendor>GetVendList()
{
List<Model.vendor> lstV = new List<Model.vendor>();
string sql = string.Format("select code,vendordes from vendor");
using (SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.conn, CommandType.Text, sql))
{
while (dr.Read())
{
lstV.Add(new Model.vendor(dr["code"].ToString().Trim (), dr["vendordes"].ToString().Trim ()));
}
}
return lstV;
}
//测试COMBOX
BLL.PO vd = new BLL.PO();
List<Model.vendor> lst =new List<Model.vendor>();
lst =vd.GetVendList();
foreach (Model.vendor v in lst)
{
string code = v.UserCode;
string vendor = v.VendorDes;
comboBox1.Items.Add(vendor);
comboBox1.DisplayMember = code;
comboBox1.ValueMember = vendor;
}
原文链接:
http://www.code-design.cn/article/20120210/csharp-generic-list-object.aspx
分享到:
相关推荐
可将list<T>转化成JSON字符串 使用方法 例: List<自定义类> l; ListChangeToJson.ListChangeToJson classJson = new ListChangeToJson.ListChangeToJson(); classJson.ArrayToJsonAll(l, "数组名字");
很多初学C#编程的人可能对泛型列表List的使用不是很清楚,希望这个例子能帮助大家.
主要实现读取xml文件内容然后转换成List<T>对象,两种实现方法。
本文给大家讲解的是如何使用C#将DataTable数据源转化为List<T>泛型集合(已知T类型) 的方法和示例,有需要的小伙伴可以参考下
C#+List<T>+GridControl实现主从表嵌套
一、List<T>对象中的T是值类型的情况(int 类型等) 对于值类型的List直接用以下方法就可以复制: List<T> oldList = new List<T>(); oldList.Add(..); List<T> newList = new List<T>(oldList); 二、List<T>对象...
C# 解析json格式数据为IList<T>
Arraylist 和 List<T> 在使用的效率是不一样的,选择不同的集合 能使项目的性能有很大的提高!
C# Lazy<T> 延迟优化算法对比 C# Lazy<T> 延迟优化算法对比
C#中的集合示例(Array,ArrayList,Hashtable,List<T>)
C#_List_<T>排序方法代码实现与文档
C# List<T>的应用描述。PDF文档
学S2的同学应该会遇到使用泛型集合List<T>存储数据,并在DataGridView里显示数据。
精华志 C#_List_<T>+Find+Exists+FindAll+Sort用法+范例 京华志&精华志出品 分享资源 C# ASP.NET SQL DBA 源码
1)使用类的属性和方法创建相关类 2)使用泛型集合Dictionary<K,V>组织对相关数据进行维护 3)使用泛型集合List<T>组织对相关数据进行维护 4)使用写入器打印数据
List<T>类几种排序方法比较灵活 可以根据自己的需要 选用合适的方法
范型List<T> Dictory<key,Value>增加事件功能 范型List<T> Dictory<key,Value>增加事件功能
在.NET FCL为我们提供了很多...结论:如果在C#2.0版本以上,尽量使用泛型集合类,而不使用非泛型集合类。因为,1. 泛型编程是从c#2.0开始才被.net支持的。2.泛型集合在性能和类型安全方面优于非泛型集 合。 。。。。
<P>map集合转化成xml字符串</P> <P>xml字符串转化成map集合</P> <P>list集合转化成xml字符串</P> <P>xml字符串转化成list集合</P>