定义:List<T>类表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索、排序和操作的方法。

作用: 泛型最常见的用途是泛型集合 我们在创建列表类时,列表项的数据类型可能是int,string或其它类型,如果对列表类的处理方法相同, 就没有必要事先指定数据类型,留待列表类实例化时再指定。相当于把数据类型当成参数,这样可以最 大限度地重用代码,保护类型的安全以及提高性能。

List的一般用法 所属命名空间: System.Collections.Generic public class List<T>:IList<T>,Icollection<T>,IEnumerable<T>,IList,Icollection,Ienumerable List<T>是ArrayList类的泛型等效类,该类使用大小可按需动态增加的数组实现IList<T>泛型接口

(1)声明 List<T>mlist = new List<T>();  eg: string[] Arr = {"a","b","c"};      List<string> mlist = new List<string>(Arr);

(2)添加一个元素 List.Add(T item)     eg: mlist.Add("d");

(3)添加集合元素    eg: string[] Arr2 ={"f","g"."h"};        mlist.AddRange(Arr2);

(4)在index位置添加一个元素 Insert(int index,T item)    eg: mlist.Insert(1,"p");

(5)遍历List中元素

  foreach(T element in mlist) T的类型与mlist声明时一样      {        Console.WriteLine(element);           }

eg:     foreach(string s in mlist)           {              Console.WriteLine(s);            }

(6)删除元素

List.Remove(T item) 删除一个值     eg: mlist.Remove("a");

List.RemoveAt(int index);删除下标为index的元素     eg: mlist.RemoveAt(0);         List.RemoveRange(int index,int count); 下标index开始,删除count个元素     eg:mlist.RemoveRange(3,2);

(7)判断某个元素是否在该List中

List.Contains(T item) 返回true或false     eg:     if(mlist.Contains"("g"))        Console.WriteLine("g存在列表中");     else        mlist.Add("g");

(8)给List里面元素排序 List.Sort() 默认是元素每一个字母按升序    eg: mlist.Sort();

(9)给List里面元素顺序反转 List.Reverse() 可以与List.Sort()配合使用

(10)List清空 List.Clear()    eg: mlist.Clear();

(11)获得List中元素数目 List.Count() 返回int值    eg: mlist.count();

List进阶,强大方法

(1)List.FindAll方法:检索与指定谓词所定义的条件相匹配的所有元素         class program     {        static void Main(stirng[] args)        {          student stu = new student();          stu.Name="arron";          List<student> students= new List<student>();          students.Add(stu);          students.Add(new student("candy"));          FindName myname = new FindName("arron");          foreach(student s in students.FindAll(new Predicate<student>(myname.IsName)))          { Console.WriteLine(s);}        }

public class student     {        public string Name{get;set;}        public student(){}        public override string ToString()         {             return string.Format("姓名:{0}",Name);          }      }

public class FindName     {       private string _name;       public FindName(string Name)       {  this._name=Name;}       public bool IsName(student s)        { return (s.Name==_name)?true:false;}     }

(2)List.Find方法 搜索与指定谓词所定义的条件相匹配的元素,并返回整个List中的第一个匹配元素

  eg:

//Predicate是对方法的委托,如果传递给它的对象与委托定义的条件匹配,则该方法返回true,当前List的元素   被逐个传递给Predicate委托,并在List中间前移动,从第一个元素开始,到最后一个元素结束,当找到匹配项   时处理停止

  第一种方法 委托给拉姆达表达式:   eg:        string listFind = mlist.Find(name=>        {           if(name.length>3)              return true;           return false;        });

第二种方法 委托给一个函数     eg:      public bool ListFind(string name)

{

if (name.Length > 3)

{

return true;

}

return false;

}

这两种方法的结果是一样的

(3) List.FindLast方法  public T FindLast(Predicate<T> match);确定是否 List 中的每个元素都与指定的谓词所定义的条件相匹配。用法与List.Find相同。

(4) List.TrueForAll方法:  确定是否 List 中的每个元素都与指定的谓词所定义的条件相匹配。

public bool TrueForAll(Predicate<T> match);

(5) List.Take(n):  获得前n行 返回值为IEnumetable<T>,T的类型与List<T>的类型一样

E.g.:

IEnumerable<string> takeList=  mList.Take(5);

foreach (string s in takeList)

{

Console.WriteLine("element in takeList: " + s);

}

这时takeList存放的元素就是mList中的前5个

(6) List.Where方法:检索与指定谓词所定义的条件相匹配的所有元素。跟List.FindAll方法类似。

E.g.:

IEnumerable<string> whereList = mList.Where(name =>

{

if (name.Length > 3)

{

return true;

}

else

{

return false;

}

});

foreach (string s in subList)

{

Console.WriteLine("element in subList: "+s);

}

这时subList存储的就是所有长度大于3的元素

(7)List.RemoveAll方法:移除与指定的谓词所定义的条件相匹配的所有元素。

public int RemoveAll(Predicate<T> match);

E.g.:

mList.RemoveAll(name =>

{

if (name.Length > 3)

{

return true;

}

else

{

return false;

}

});

foreach (string s in mList)

{

Console.WriteLine("element in mList:     " + s);

}

这时mList存储的就是移除长度大于3之后的元素。

转载于:https://www.cnblogs.com/macavalier/p/4468977.html

c# 泛型List的定义、作用、用法相关推荐

  1. 空的宏定义作用及常见用法

    空的宏定义作用及常见用法 我们学习宏定义的第一个概念是,宏定义作为替换作用. 例如: #define SIZE 32 // 接下来代码使用SIZE就相当于32 宏定义是编译器在编译时,将程序中所有SI ...

  2. PHP中extract()函数的定义和用法

    定义和用法 PHP extract() 函数从数组中把变量导入到当前的符号表中. 对于数组中的每个元素,键名用于变量名,键值用于变量值. 第二个参数type 用于指定当某个变量已经存在,而数组中又有同 ...

  3. php templete什么意思,PHP设计模式之模板方法模式定义与用法详解

    本文实例讲述了PHP设计模式之模板方法模式定义与用法.分享给大家供大家参考,具体如下: 什么是模板方法模式 模板方法(Template Method)设计模式中使用了一个类方法templateMeth ...

  4. 全局变量的声明、定义及用法

    全局变量的声明.定义及用法 文章目录 全局变量的声明.定义及用法 1. 编译单元(模块) 2. 声明和定义 3. extern 作用 4. 全局变量(extern) 4.1 如果直接将声明和定义都放在 ...

  5. php explode函数 中文,php explode() 函数定义与用法汇总(2021)

    explode 作用: 使用一个字符串分割另一个字符串 语法:explode ( string $delimiter , string $string [, int $limit ] ) : arra ...

  6. php面向对象程序设计,PHP面向对象程序设计类的定义与用法简单示例

    本文实例讲述了PHP面向对象程序设计类的定义与用法.分享给大家供大家参考,具体如下: class Person { private $name; private $sex; private $age; ...

  7. 【Android NDK 开发】JNI 方法解析 ( JNIEXPORT 与 JNICALL 宏定义作用 )

    文章目录 I . JNIEXPORT 与 JNICALL 宏定义 II . JNIEXPORT 与 JNICALL 宏定义说明 ( Windows 平台 ) III . JNIEXPORT 与 JNI ...

  8. js indexof用法indexOf()定义和用法

    indexOf()定义和用法 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. 语法 stringObject.indexOf(searchvalue,fromindex) ...

  9. python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...

    本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...

  10. html里面onclick属性是什么,html中onclick事件属性定义与用法

    在前端网页设计时,离不开一些动态事件的交互,比如提交数据,登录,注册等等.这事件一般都需要通过HTML onclick事件的调用,这篇文章重点介绍一下 onclick事件的定义与用法 onclick事 ...

最新文章

  1. 把录制的视频压缩到最低
  2. Git/Github--push自己的第一段代码
  3. 出了本练内功的书:《完美软件开发:方法与逻辑》
  4. 送女朋友的java小程序_用C编写一个送给女朋友的情人节小程序 可爱!
  5. 推荐中文分词:腾讯文智
  6. unix到底有啥用_微信新上线的「拍拍」到底有啥用?
  7. 空军预警学院计算机与网络,空军预警学院学报
  8. 线性代数mit18.06读课本-D1-1.1
  9. mac整站下载工具wget
  10. vtk相机_VTK相机参数
  11. 深度学习:GCN图分类案例
  12. sql CASE WEN 函数
  13. Git 推送命令报错
  14. 《思维力:高效的系统思维》读书笔记05 - 快速提升你的沟通表达能力
  15. 原码、反码、补码和真值
  16. 容齐的身世_白发王妃漫夭和容齐是什么关系 女主容乐跟谁睡过遭扒可怜容齐...
  17. 谁锁了我的帐号?(AD账号的锁定状态查询)
  18. 全国计算机一级考级考纲,全国计算机等级考试一级MSOffice考试大纲
  19. 远程桌面连接:提示出现身份验证错误,要求的函数不受支持。这可能是由于CredSSP加密数据库修正错误。
  20. NGINX做反向代理缓存服务器原理

热门文章

  1. 可工作的软件胜过面面俱到的文档
  2. 定时任务(Spring Cloud Task)
  3. Spring-Boot + AOP实现多数据源动态切换
  4. (马世龙)Linux下CACTI完全搭建技术文档二
  5. mysql本地连接错误解决办法
  6. SSH HTTPS 公钥、秘钥、对称加密、非对称加密、 总结理解
  7. ExpandableListView 箭头靠右
  8. 如何使用FF的Firebug组件中的net工具查看页面元素加载消耗时间
  9. 不使用中间变量交换2个数据
  10. 数据可视化工具_数据可视化