Maison > développement back-end > Tutoriel C#.Net > Résumé de l'utilisation de C# List

Résumé de l'utilisation de C# List

高洛峰
Libérer: 2017-01-19 11:46:53
original
1562 Les gens l'ont consulté

Espace de noms propriétaire : System.Collections.Generic
classe publique List : IList, ICollection, IEnumerable, IList, ICollection, IEnumerable

List< ;Class est l'équivalent générique de la classe ArrayList. Cette classe implémente l'interface générique IList en utilisant un tableau dont la taille peut être augmentée dynamiquement selon les besoins.

Avantages des génériques : ils ajoutent une grande efficacité et flexibilité à l'écriture de programmes orientés objet à l'aide du langage C#. Il n’y a pas de boxing et de déballage forcés des types valeur, ni de downcasting des types référence, les performances sont donc améliorées.

Remarque sur les performances :

Lorsque vous décidez d'utiliser IList ou la classe ArrayList (les deux ont des fonctionnalités similaires), n'oubliez pas que la classe IList -sûr.

Si vous utilisez un type référence pour le type T de la classe IList, le comportement des deux classes est exactement le même. Toutefois, si vous utilisez un type valeur pour le type T, vous devez prendre en compte les problèmes d’implémentation et de boxing.

" Toute référence ou type de valeur ajouté à ArrayList sera implicitement converti en Objet. Si l'élément est un type de valeur, il doit être encadré lorsqu'il est ajouté à la liste, dans les opérations de déballage sont effectuées pendant les opérations de conversion et de boxing et de déballage réduisent toutes les performances ; l'impact du boxing et du déballage est important dans les situations où de grandes collections doivent être itérées "


1. 🎜>

Déclaration :

1. List mList = new List();
T est le type d'éléments dans la liste, prenons maintenant le type de chaîne comme exemple

Par exemple : Liste mList = new List();


2. List 🎜>Créer une liste

Par exemple avec une collection en paramètre :

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

List testList = new List(temArr);



Ajouter des éléments :

1. Add(T item) Ajouter un élément

Par exemple : mList.Add("John");

2 List AddRange(IEnumerable collection) Ajouter un ensemble d'éléments

Exemple :

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

mList.AddRange(temArr);

3. Insert(int index, T item); Ajouter un élément à la position d'index

Exemple : mList.Insert (1, "Hei") ;

Parcourir les éléments dans la Liste :

Exemple :

foreach (T element in mList)  T的类型与mList声明时一样
{
    Console.WriteLine(element);
}
Copier après la connexion
Supprimer des éléments :

foreach (string s in mList)
{
    Console.WriteLine(s);
}
Copier après la connexion

1. List. Remove(T item) supprime une valeur


Par exemple : mList.Remove("Hunter");

2. RemoveAt(int index ); dont l'index est index

Par exemple : mList.RemoveAt(0);

3 List RemoveRange(int index, int count);

From Commencer par l'index d'indice. , supprimez le nombre d'éléments

Par exemple : mList.RemoveRange(3, 2);

Déterminez si un élément est dans la liste :

List Contains(T item) Renvoie. vrai ou faux, très pratique

Ex. :

Trier les éléments dans la Liste :

if (mList.Contains("Hunter"))
{
    Console.WriteLine("There is Hunter in the list");
}
else
{
    mList.Add("Hunter");
    Console.WriteLine("Add Hunter successfully.");
}
Copier après la connexion

Trier () La valeur par défaut est la première lettre de l'élément dans l'ordre croissant


Exemple : mList.Sort();

inverse l'ordre des éléments dans la liste :

List Reverse (. ) peut être utilisé conjointement avec List Sort () pour obtenir l'effet souhaité

Par exemple : mList.Sort();

List clear : List Clear ()

Par exemple : mList.Clear();


Obtenir le nombre d'éléments dans la liste :

List. Count () Renvoyer la valeur int

Par exemple :

int count = mList .Count ();

Console.WriteLine("Le nombre d'éléments dans la liste : " count);

2. Méthodes avancées et puissantes de List :

Liste utilisée comme liste. exemple :

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

mList.AddRange(temArr);

Méthode List.Find : recherche les éléments qui correspondent aux conditions définies par le prédicat spécifié et renvoie le premier élément correspondant dans la liste entière.

public T Find(Predicate match);


Predicate est un délégué à la méthode Si l'objet qui lui est transmis correspond aux conditions définies dans le délégué, la méthode renvoie true. Les éléments de la Liste actuelle sont transmis au délégué Prédicat un par un et avancés dans la Liste, en commençant par le premier élément et en terminant par le dernier élément. Le traitement s'arrête lorsqu'une correspondance est trouvée.

Le prédicat peut être délégué à une fonction ou à une expression lambda :

Délégué à une expression lambda :

Exemple :

Délégué à un fonction :

string listFind = mList.Find(name =>  //name是变量,代表的是mList
   {      //中元素,自己设定
   if (name.Length > 3)
   {
  return true;
   }
  return false;
});
Console.WriteLine(listFind);     //输出是Hunter
Copier après la connexion

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;
 }
Copier après la connexion


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

List.FindLast 方法:搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的最后一个匹配元素。
public T FindLast(Predicate match);


用法与List.Find相同。

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

public bool TrueForAll(Predicate 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
Copier après la connexion

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

E.g.:

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

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

List.FindAll方法:检索与指定谓词所定义的条件相匹配的所有元素。

public List FindAll(Predicate match);

E.g.:

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

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

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


E.g.:

IEnumerable<string> takeList=  mList.Take(5);
   foreach (string s in takeList)
   {
  Console.WriteLine("element in takeList: " + s);
   }
Copier après la connexion

这时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);
  }
Copier après la connexion

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

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


public int RemoveAll(Predicate 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);
}
Copier après la connexion

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

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

List 就相当于 System.Collections命名空间里面的List

更多C# List的用法小结相关文章请关注PHP中文网!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal