•   欢迎来到21NN网.
  •   请记住本站网址www.21nn.cn

C# List<T>的用法小结【C#.Net教程】,List用法 C#

摘要: 所属定名空间:System.Collections.GenericpublicclassList<T>:IList<T>,ICollection<T>...
所属定名空间:System.Collections.Generic
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

List<T>类是 ArrayList 类的泛型等效类。该类运用大小可按需动态增添的数组完成 IList<T> 泛型接口。

泛型的优点: 它为运用c#言语编写面向对象递次增添了极大的效能和灵活性。不会强行对值范例举行装箱和拆箱,或对援用范例举行向下强迫范例转换,所以机能取得进步。

机能注意事项:

在决议运用IList<T> 照样运用ArrayList类(二者具有相似的功用)时,记着IList<T> 类在大多数情况下执行得更好并且是范例平安的。

假如对IList<T> 类的范例 T 运用援用范例,则两个类的行动是完全雷同的。然则,假如对范例 T 运用值范例,则须要斟酌完成和装箱题目。

“增加到 ArrayList 中的任何援用或值范例都将隐式地向上强迫转换为 Object。假如项是值范例,则必需在将其增加到列表中时举行装箱操纵,在检索时举行作废装箱操纵。强迫转换以及装箱和作废装箱操纵都邑下降机能;在必需对大型鸠合举行轮回接见的情况下,装箱和作废装箱的影响异常显著。”


1、List的基本、经常使用要领:

声明:
1、List<T> mList = new List<T>();
T为列表中元素范例,如今以string范例作为例子

E.g.:List<string> mList = new List<string>();

2、List<T> testList =new List<T> (IEnumerable<T> collection);

以一个鸠合作为参数建立List

E.g.:
string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu" };
List<string> testList = new List<string>(temArr);


增加元素:

1、 List. Add(T item) 增加一个元素

E.g.:mList.Add("John");

2、 List. AddRange(IEnumerable<T> collection) 增加一组元素

E.g.:
string[] temArr = { "Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu" };
mList.AddRange(temArr);

3、Insert(int index, T item); 在index位置增加一个元素

E.g.:mList.Insert(1, "Hei");

遍历List中元素:

foreach (T element in mList)  T的范例与mList声明时一样
{
    Console.WriteLine(element);
}

E.g.:

foreach (string s in mList)
{
    Console.WriteLine(s);
}

删除元素:


1、 List. Remove(T item)删除一个值

E.g.:mList.Remove("Hunter");

2、 List. RemoveAt(int index); 删除下标为index的元素

E.g.:mList.RemoveAt(0);

3、 List. RemoveRange(int index, int count);

从下标index最先,删除count个元素

E.g.:mList.RemoveRange(3, 2);

推断某个元素是不是在该List中:

List. Contains(T item) 返回true或false,很有用

E.g.:

if (mList.Contains("Hunter"))
{
    Console.WriteLine("There is Hunter in the list");
}
else
{
    mList.Add("Hunter");
    Console.WriteLine("Add Hunter successfully.");
}

给List内里元素排序:


List. Sort () 默许是元素第一个字母按升序

E.g.:mList.Sort();

给List内里元素递次反转:

List. Reverse () 能够与List. Sort ()合营运用,到达想要的结果

E.g.:mList.Sort();

List清空:List. Clear ()
E.g.: mList.Clear();

取得List中元素数量:

List. Count () 返回int值

E.g.:
int count = mList.Count();
Console.WriteLine("The num of elements in the list: " +count);

2、List的进阶、壮大要领:

举例用的List:

string[] temArr = { Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", " "Locu" };

mList.AddRange(temArr);

List.Find 要领:搜刮与指定谓词所定义的前提相婚配的元素,并返回全部 List 中的第一个婚配元素。
public T Find(Predicate<T> match);

Predicate是对要领的托付,假如通报给它的对象与托付中定义的前提婚配,则该要领返回 true。当前 List 的元素被逐一通报给Predicate托付,并在 List 中向前挪动,从第一个元素最先,到末了一个元素完毕。当找到婚配项时处置惩罚即住手。

Predicate 能够托付给一个函数或许一个拉姆达表达式:

托付给拉姆达表达式:

E.g.:

string listFind = mList.Find(name =>  //name是变量,代表的是mList
   {      //中元素,本身设定
   if (name.Length > 3)
   {
  return true;
   }
  return false;
});
Console.WriteLine(listFind);     //输出是Hunter

托付给一个函数:


E.g.:
string listFind1 = mList.Find(ListFind); //托付给ListFind函数
Console.WriteLine(listFind); //输出是Hunter

ListFind函数:

public bool ListFind(string name)
 {
if (name.Length > 3)
{
    return true;
}
return false;
 }


这两种要领的结果是一样的。

List.FindLast 要领:搜刮与指定谓词所定义的前提相婚配的元素,并返回全部 List 中的末了一个婚配元素。
public T FindLast(Predicate<T> match);


用法与List.Find雷同。

List.TrueForAll要领: 肯定是不是 List 中的每一个元素都与指定的谓词所定义的前提相婚配。

public bool TrueForAll(Predicate<T> match);

托付给拉姆达表达式:

E.g.:

bool flag = mList.TrueForAll(name =>
{
    if (name.Length > 3)
    {
 return true;
    }
    else
    {
 return false;
    }
}
);
Console.WriteLine("True for all:  "+flag);  //flag值为false

托付给一个函数,这里用到上面的ListFind函数:

E.g.:

bool flag = mList.TrueForAll(ListFind); //托付给ListFind函数
Console.WriteLine("True for all: "+flag); //flag值为false

这两种要领的结果是一样的。

List.FindAll要领:检索与指定谓词所定义的前提相婚配的一切元素。

public List<T> FindAll(Predicate<T> match);

E.g.:

List<string> subList = mList.FindAll(ListFind); //托付给ListFind函数
 foreach (string s in subList)
 {
Console.WriteLine("element in subList: "+s);
 }

这时候subList存储的就是一切长度大于3的元素

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个

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的元素

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以后的元素。

List<T> 是一个泛型链表...T示意节点元素范例
比方
List<int> intList;示意一个元素为int的链表
intList.Add(34); //增加
intList.Remove(34);//删除
intList.RemoveAt(0); //删除位于某处的元素
intList.Count; //链表长度
另有Insert,Find,FindAll,Contains等要领,也有索引要领 intList[0] = 23;
1.减少了装箱拆箱
2.便于编译时搜检数据范例

List<Object> 就相当于 System.Collections定名空间内里的List

更多C# List<T>的用法小结相干文章请关注ki4网!

分享到:

发表评论

评论列表

还没有评论,快来说点什么吧~

公众号二维码

微信公众号