c# 泛型List的定义、作用、用法

定义: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[vim]在vim中格式化xml

From: http://blog.sina.com.cn/s/blog_498a6eeb0100v3km.html 在_vimrc中增加&#xff1a; " 格式化xml function Xml() set filetypexml :%s/></>\r</g"把><替换成>回车< :normal ggG endfunction map <leader>xml :ca…

怎样用php写入数据库表,PHP如何将数据写入到MYSQL数据库

要想通过PHP将数据写入到MYSQL数据库&#xff0c;基本上要经历三步骤&#xff1a;连接数据库将数据写入数据库关闭连接连接数据库代码&#xff1a;define("DB_HOST","localhost");define("DB_USER","root");define("DB_PWD"…

无线路由与无线AP有什么不同

无线路由与无线AP有什么不同 无线网络从07年开始就进入高速发展的时期&#xff0c;无论是企业还是家庭&#xff0c;在组建网络的时候&#xff0c;大部分都会选择架设无线网络。但是无线网络因为其多种协议、多种功能&#xff0c;产品之间也会有不小的差别&#xff0c;就像很多人…

VIM 参考手册

From: http://vimcdoc.sourceforge.net/doc/map.html *map.txt* For Vim version 7.3. 最后更新: 2011年5月VIM 参考手册 作者: Bram Moolenaar译者: con<connetease.com>http://vimcdoc.sf.net键映射、缩写和用户定义的命令。本主题在用户手册 |05.3|&#x…

php直接导出csv,PHP百万级数据导出方案(生成器直接输出单个CSV)

概述&#xff1a;之前写过一篇文章叫PHP百万级数据导出方案(多csv文件压缩)&#xff0c;发现很多朋友都很感兴趣&#xff0c;但是当时用的方法比较不方便&#xff0c;可能不太符合很多人的需求。后来想了一下如何优化时&#xff0c;了解到能用生成器来处理内存溢出更方便&#…

vsftpd理论

各种FTP • FTP 基本最常见的FTP TCP21 • FTPS 基于TLS/SSL TCP21 • SFTP 基于SSH TCP22 • HTTP 基于HTTP TCP80 • HTTPS 基于SSL TCP443 • FT…

iOS - 判断用户是否允许推送通知(iOS7/iOS8)

&#xff08;iOS8中用户开启的推送通知类型对应的是UIUserNotificationType&#xff08;下边代码中UIUserNotificationSettings的types属性的类型&#xff09;&#xff0c;iOS7对应的是UIRemoteNotificationType&#xff09; 此处以iOS8的UIUserNotificationType为例&#xff0…

php金额类,PHP类-人民币金额转大写

这篇文章介绍的内容是关于PHP类-人民币金额转大写&#xff0c;有着一定的参考价值&#xff0c;现在分享给大家&#xff0c;有需要的朋友可以参考一下<?php //人民币金额转大写程序PHP版class Ext_Num2Cny{static $basical array(0>"零","壹","…

第一课 PE格式

From: http://bbs.pediy.com/showpost.php?p138590&postcount2 要想学脱壳&#xff0c;第一步就得掌握PE格式&#xff0c;PE是Portable Executable File Format&#xff08;可移植的执行体&#xff09;简写&#xff0c;它是目前Windows平台上的主流可执行文件格式。 Micr…

React开发(182):ant design table中 带线框的列表

ReactDOM.render(<Tablecolumns{columns}dataSource{data}borderedtitle{() > Header}footer{() > Footer}/>,mountNode, );

Linux DHCP Server 配置给FIT AP 使用的option

Linux DHCP Server 配置给FIT AP 使用的option 2010-09-17 09:45:52标签&#xff1a;Linux DHCP Server option FIT    [推送到技术圈] 版权声明&#xff1a;原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将…

2015已经过去三分之一了

今天5月4号转载于:https://www.cnblogs.com/rewufu/p/4475352.html

VIM自动格式化C代码

From: http://leloup.blog.51cto.com/blog/1113857/596107 在vim的官方FAQ &#xff08;http://vimdoc.sourceforge.net/cgi-bin/vimfaq2html3.pl#14.6&#xff09;找到的&#xff1a; 格式化全文&#xff1a; ggG 自动缩进当前行&#xff1a; 这个是原文节选&#xff1a; …

Claims 认证详解(1)

很多时候&#xff0c;我们进行应用程序之间的交互。比如&#xff0c;一个员工登录了门户网站后&#xff0c;需要访问进销存系统、CRM系统&#xff0c;如果不进行特殊处理&#xff0c;就需要多次输入用户名和密码。用过SharePoint的朋友&#xff0c;可能知道有个“单点登录”的东…

ThinkPHP - 6 - 学习笔记(2015.5.4)

解决&#xff1a;OneThink 站点无法被友言uyan后台识别 打开友言uyan插件功能&#xff0c;但OneThink站点无法被友言uyan后台检测到。页面生成的uyan代码为&#xff1a; 1 <!-- UY BEGIN --> 2 <div id"uyan_frame"></div> 3 <script type"…

php什么设置前端代码,代码编辑器与PHPSTUDY的安装与配置过程(前端第一课)

前端第一课&#xff1a;编辑器与PHPSTUDY的安装与配置过程编辑器安装过程1.Visual Studio Code 官网下载软件&#xff0c;解压下载文件&#xff0c;打开安装程序安装至你的计算机。2.安装“Chinese(Simplified)Language Pack for Visual Studio Code” 插件&#xff0c;并重启v…

重学java基础第二十课:环境配置和第一个helloWorld

大家好 我是歌谣 闲来无事做 不如敲代码 今天大概说如何编译一个简单的helloWorld小案例 安装环境的配置 1首先进入jdk的官网 找到对应的jdk版本 这边一window为例 2接下来--右键--计算机--属性--进行高级系统设置 3在用户变量里面配置 JAVA_HOME:G:\java CLASSPATH:.;%JAV…

vim QuickFix 窗口

From: http://hi.baidu.com/bali5/blog/item/82f87c0ab670a136b0351d4f.html 在上一节的图10中大家可以看到在窗口下面有一个显示查询结果的窗口, 这个窗口中列出了查询命令的查询结果, 用户可以从这个窗口中选择每个结果进行查看, 这个窗口叫"QuickFix"窗口, 以前也…

谷歌笔试题(Google十二岁生日晚)

2010-9-27日是Google十二岁生日&#xff0c;就在生日当天&#xff0c;Google进行了一场宣讲会加笔试。Google果然不一般&#xff0c;宣讲会门外都站满了人&#xff0c;也可见竞争之激烈&#xff0c;据说只需要40个人参加面试&#xff0c;而笔试的人有1000之多&#xff0c;汗………

CodeIgniter配置之config

配置说明 $config[language]&#xff1a;指定项目语言包。需要注意的时Codeigniter自带的类库错误提示语言包位于/system/language/english/目录下&#xff0c;当这里配置非english时&#xff0c; 如果需要用到这些类库&#xff0c;则需要拷贝语言包到指定的目录中&#xff0c;…