Espace de noms propriétaire : System.Collections.Generic
classe publique List
List< ;Class est l'équivalent générique de la classe ArrayList. Cette classe implémente l'interface générique IList
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
Si vous utilisez un type référence pour le type T de la classe IList
" 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. 🎜>
1. List
T est le type d'éléments dans la liste, prenons maintenant le type de chaîne comme exemple
2. List
string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim" , "Kuku", "Locu" };
List
Ajouter des éléments :
1. Add(T item) Ajouter un élément
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); }
foreach (string s in mList) { Console.WriteLine(s); }
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."); }
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
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
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.Find相同。
List.TrueForAll方法: 确定是否 List 中的每个元素都与指定的谓词所定义的条件相匹配。
public bool TrueForAll(Predicate
委托给拉姆达表达式:
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
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
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
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
比如
List
intList.Add(34); //添加
intList.Remove(34);//删除
intList.RemoveAt(0); //删除位于某处的元素
intList.Count; //链表长度
还有Insert,Find,FindAll,Contains等方法,也有索引方法 intList[0] = 23;
1.减少了装箱拆箱
2.便于编译时检查数据类型
List
更多C# List