C#泛型集合—List<T>使用技巧
来源:互联网 发布:java杨辉三角形代码 编辑:程序博客网 时间:2024/05/16 14:08
泛型集合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
- C#泛型集合—List<T>使用技巧
- 泛型集合List<T>
- 泛型集合 list<T>
- 【C#基础知识】——List<T>And Dictionary<K,V>泛型集合
- Java泛型集合结构,List<T>,及其子类ArrayList<T>,LinkedList<T>的使用
- C#泛型集合—Dictionary<K,V>使用技巧
- C#list<T>泛型集合习题
- C#泛型集合List<T>自带方法之排序
- C# 找出泛型集合中的满足一定条件的元素 List<T>.Wher()
- C# List泛型集合
- C# List泛型集合
- C# List泛型集合
- C# List<T> 数组,集合等排序
- C#ArrayList 集合 和list<t>泛型集合
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
- C# List<T>使用方式
- CSS优先级或特殊性 总结归纳
- CPU cache学习
- HDOJ 1166 敌兵布阵
- 删除文件/文件夹时,报错说"找不到该项目,请确认该项目的位置"
- 3D引擎
- C#泛型集合—List<T>使用技巧
- cache
- 双链表相关资料
- Programming 3D games on Android with Irrlicht and Bullet
- Windows运行命令集锦
- fedaro启用LVM情况下新建并挂载swap分区
- 黑马程序员 Java基础 08
- java复习三 线程
- linux下应用OGRE开发3D