Maison >développement back-end >Tutoriel C#.Net >Résumé de l'utilisation de C# List
Espace de noms propriétaire : System.Collections.Generic
classe publique List8742468051c85b06f0a0af9e3e506b5c : IList8742468051c85b06f0a0af9e3e506b5c, ICollection8742468051c85b06f0a0af9e3e506b5c, IEnumerable8742468051c85b06f0a0af9e3e506b5c, IList, ICollection, IEnumerable
List< ;Class est l'équivalent générique de la classe ArrayList. Cette classe implémente l'interface générique IList8742468051c85b06f0a0af9e3e506b5c 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 IList8742468051c85b06f0a0af9e3e506b5c ou la classe ArrayList (les deux ont des fonctionnalités similaires), n'oubliez pas que la classe IList8742468051c85b06f0a0af9e3e506b5c -sûr.
Si vous utilisez un type référence pour le type T de la classe IList8742468051c85b06f0a0af9e3e506b5c, 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. 🎜>
1. List8742468051c85b06f0a0af9e3e506b5c mList = new List8742468051c85b06f0a0af9e3e506b5c();
T est le type d'éléments dans la liste, prenons maintenant le type de chaîne comme exemple
2. List8742468051c85b06f0a0af9e3e506b5c 🎜>Créer une liste
string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim" , "Kuku", "Locu" };
List98c455a79ddfebb79781bff588e7b37e testList = new List98c455a79ddfebb79781bff588e7b37e(temArr);
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); }Supprimer des éléments :
foreach (string s in mList) { Console.WriteLine(s); }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."); }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(Predicate8742468051c85b06f0a0af9e3e506b5c 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
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(Predicate8742468051c85b06f0a0af9e3e506b5c 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 List8742468051c85b06f0a0af9e3e506b5c FindAll(Predicate8742468051c85b06f0a0af9e3e506b5c 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行 返回值为IEnumetable8742468051c85b06f0a0af9e3e506b5c,T的类型与List8742468051c85b06f0a0af9e3e506b5c的类型一样
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(Predicate8742468051c85b06f0a0af9e3e506b5c 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之后的元素。
List8742468051c85b06f0a0af9e3e506b5c 是一个泛型链表...T表示节点元素类型
比如
Listbd43222e33876353aff11e13a7dc75f6 intList;表示一个元素为int的链表
intList.Add(34); //添加
intList.Remove(34);//删除
intList.RemoveAt(0); //删除位于某处的元素
intList.Count; //链表长度
还有Insert,Find,FindAll,Contains等方法,也有索引方法 intList[0] = 23;
1.减少了装箱拆箱
2.便于编译时检查数据类型
Lista87fdacec66f0909fc0757c19f2d2b1d 就相当于 System.Collections命名空间里面的List
更多C# List8742468051c85b06f0a0af9e3e506b5c的用法小结相关文章请关注PHP中文网!