C#中List<T>的作用与用法,求详解 谢谢

 我来答
Yutouyu51
2011-08-24 · TA获得超过119个赞
知道小有建树答主
回答量:175
采纳率:100%
帮助的人:135万
展开全部
构造函数
名称 说明
List<T>() 初始化 List<T> 类的新实例,该实例为空并且具有默认初始容量。
List<T>(IEnumerable<T>) 初始化 List<T> 类的新实例,该实例包含从指定集合复制的元素并且具有足够的容量来容纳所复制的元素。
List<T>(Int32) 初始化 List<T> 类的新实例,该实例为空并且具有指定的初始容量。

属性
--------------------------------------------------------------------------------

名称 说明
Capacity 获取或设置该内部数据结构在不调整大小的情况下能够容纳的元素总数。
Count 获取 List<T> 中实际包含的元素数。
Item 获取或设置指定索引处的元素。

方法
--------------------------------------------------------------------------------

名称 说明
Add 将对象添加到 List<T> 的结尾处。
AddRange 将指定集合的元素添加到 List<T> 的末尾。
AsReadOnly 返回当前集合的只读 IList<T> 包装。
BinarySearch(T) 使用默认的比较器在整个已排序的 List<T> 中搜索元素,并返回该元素从零开始的索引。
BinarySearch(T, IComparer<T>) 使用指定的比较器在整个已排序的 List<T> 中搜索元素,并返回该元素从零开始的索引。
BinarySearch(Int32, Int32, T, IComparer<T>) 使用指定的比较器在已排序 List<T> 的某个元素范围中搜索元素,并返回该元素从零开始的索引。
Clear 从 List<T> 中移除所有元素。
Contains 确定某元素是否在 List<T> 中。
ConvertAll<TOutput> 将当前 List<T> 中的元素转换为另一种类型,并返回包含转换后的元素的列表。
CopyTo(T[]) 将整个 List<T> 复制到兼容的一维数组中,从目标数组的开头开始放置。
CopyTo(T[], Int32) 将整个 List<T> 复制到兼容的一维数组中,从目标数组的指定索引位置开始放置。
CopyTo(Int32, T[], Int32, Int32) 将一定范围的元素从 List<T> 复制到兼容的一维数组中,从目标数组的指定索引位置开始放置。
Equals(Object) 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
Exists 确定 List<T> 是否包含与指定谓词所定义的条件相匹配的元素。
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
Find 搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List<T> 中的第一个匹配元素。
FindAll 检索与指定谓词定义的条件匹配的所有元素。
FindIndex(Predicate<T>) 搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List<T> 中第一个匹配元素的从零开始的索引。
FindIndex(Int32, Predicate<T>) 搜索与指定谓词所定义的条件相匹配的元素,并返回 List<T> 中从指定索引到最后一个元素的元素范围内第一个匹配项的从零开始的索引。
FindIndex(Int32, Int32, Predicate<T>) 搜索与指定谓词所定义的条件相匹配的元素,并返回 List<T> 中从指定的索引开始并包含指定元素数量的元素范围内的第一个匹配项的零始索引。
FindLast 搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List<T> 中的最后一个匹配元素。
FindLastIndex(Predicate<T>) 搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List<T> 中最后一个匹配元素的从零开始的索引。
FindLastIndex(Int32, Predicate<T>) 搜索与由指定谓词定义的条件相匹配的元素,并返回 List<T> 中从第一个元素到指定索引的元素范围内最后一个匹配项的从零开始的索引。
FindLastIndex(Int32, Int32, Predicate<T>) 搜索与指定谓词所定义的条件相匹配的元素,并返回 List<T> 中包含指定元素个数并到指定索引结束的元素范围内的最后一个匹配项的零始索引。
ForEach 对 List<T> 的每个元素执行指定操作。
GetEnumerator 返回循环访问 List<T> 的枚举器。
GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
GetRange 创建源 List<T> 中的元素范围的浅表副本。
GetType 获取当前实例的 Type。 (继承自 Object。)
IndexOf(T) 搜索指定的对象,并返回整个 List<T> 中第一个匹配项的从零开始的索引。
IndexOf(T, Int32) 搜索指定的对象,并返回 List<T> 中从指定索引到最后一个元素的元素范围内第一个匹配项的从零开始的索引。
IndexOf(T, Int32, Int32) 搜索指定的对象,并返回 List<T> 中从指定的索引开始并包含指定的元素数的元素范围内第一个匹配项的从零开始的索引。
Insert 将元素插入 List<T> 的指定索引处。
InsertRange 将集合中的某个元素插入 List<T> 的指定索引处。
LastIndexOf(T) 搜索指定的对象,并返回整个 List<T> 中最后一个匹配项的从零开始的索引。
LastIndexOf(T, Int32) 搜索指定的对象,并返回 List<T> 中从第一个元素到指定索引的元素范围内最后一个匹配项的从零开始的索引。
LastIndexOf(T, Int32, Int32) 搜索指定的对象,并返回 List<T> 中包含指定的元素数并在指定索引处结束的元素范围内最后一个匹配项的从零开始的索引。
MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
Remove 从 List<T> 中移除特定对象的第一个匹配项。
RemoveAll 移除与指定的谓词所定义的条件相匹配的所有元素。
RemoveAt 移除 List<T> 的指定索引处的元素。
RemoveRange 从 List<T> 中移除一定范围的元素。
Reverse() 将整个 List<T> 中元素的顺序反转。
Reverse(Int32, Int32) 将指定范围中元素的顺序反转。
Sort() 使用默认比较器对整个 List<T> 中的元素进行排序。
Sort(Comparison<T>) 使用指定的 System.Comparison<T> 对整个 List<T> 中的元素进行排序。
Sort(IComparer<T>) 使用指定的比较器对整个 List<T> 中的元素进行排序。
Sort(Int32, Int32, IComparer<T>) 使用指定的比较器对 List<T> 中某个范围内的元素进行排序。
ToArray 将 List<T> 的元素复制到新数组中。
ToString 返回表示当前对象的字符串。 (继承自 Object。)
TrimExcess 将容量设置为 List<T> 中的实际元素数目(如果该数目小于某个阈值)。
TrueForAll 确定是否 List<T> 中的每个元素都与指定的谓词所定义的条件相匹配。

参考资料: MSDN库

linux7985
2011-08-24 · TA获得超过1230个赞
知道小有建树答主
回答量:501
采纳率:0%
帮助的人:431万
展开全部
List<T> 和 List的用法是一模一样,不同的是,List支持任何类型 而List<T> 只支持T类型,T是在定义时指定的类型

如:
List<String> list = new List<String>();
这样的话,每个list里的元素都是字符串。
同理
List<int> list = new List<int>();
这样的话,每个list里的元素都是整形。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-08-24 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:146万
展开全部
泛型 T是类型
大多数情况下List<T>执行得更好并且是类型安全的,可以替换ArrayList,但是如果对类型 T 使用值类型,则编译器将特别针对该值类型生成 List<T> 类的实现。这意味着不必对 List<T> 对象的列表元素进行装箱就可以使用该元素,并且在创建大约 500 个列表元素之后,不对列表元素装箱所节省的内存将大于生成该类实现所使用的内存。如果创建小于500个元素,建议使用ArrayList.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
说着笑着d午后
推荐于2018-04-05 · TA获得超过282个赞
知道小有建树答主
回答量:426
采纳率:0%
帮助的人:264万
展开全部
泛型的概念,看看相关的知识就行,以前用 DataTable 挺开心的,不过还是建议用 List<T> 来弄,配合上 Linq 能很方便的实现 DataTable 实现起来很麻烦的操作,T可以是任何的类型,依照你的功能需要来做就行了,例如:
List<MyUser> listUsers = new List<MyUser>();
这样就声明了个MyUser(一个自定义类)列表,可以直接绑定到数据容器控件中,具体的用法查查msdn吧,里面说的挺详细的
追问
DataTable 和List 有什么共同和不同点, 优缺点 小弟实在是对List 一点了解都没有   麻烦解释一下 谢谢了
追答
要说 DataTable 和List 有什么共同和不同点的话我觉得还真没必要深究,明白为什么要用,什么时候用就行了,DataTable 的属性访问个人认为要比 List 麻烦的多,而且面向对象的话 List 也体现的更透彻些,不同的是 DataTable 因为不与实体绑定,所以 DataTable 的数据隔离性要比 List 好些,不过相比起 List 的优势,这点也就不值得一提了,特别是我上面说的 Linq ,通过 Linq,List 能实现很多 DataTable 实现起来复杂的操作,而且 List 面向对象体现的更好,还是比较推荐 List 的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奥术引擎
2011-08-24 · TA获得超过414个赞
知道答主
回答量:72
采纳率:0%
帮助的人:86.3万
展开全部
假设有个用户实体类Customer
public class Customer
{
public int CustomerID{get;set;}
public string CustomerName{get;set;}
}

List<Customer> custormerList=new List<Customer>();
custormerList.Add(new Customer{CustomerID=1,CustomerName="张三"});
custormerList.Add(new Customer{CustomerID=2,CustomerName="李四"});
custormerList.Add(new Customer{CustomerID=3,CustomerName="王五"});
custormerList.Add(new Customer{CustomerID=4,CusotmerName="赵六"});
访问方式:custormerList[0].CustomerID
List<Customer>就和Customer[]类似,不过是强类型的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式