Zusammenfassung der Verwendung von C# List

高洛峰
Freigeben: 2017-01-19 11:46:53
Original
1492 Leute haben es durchsucht

Besitzender Namespace: System.Collections.Generic
öffentliche Klasse List, ICollection, IEnumerable, IList, ICollection, IEnumerable

List ;Class ist das generische Äquivalent der ArrayList-Klasse. Diese Klasse implementiert die generische Schnittstelle IList mithilfe eines Arrays, dessen Größe bei Bedarf dynamisch erhöht werden kann.

Vorteile von Generika: Sie erhöhen die Effizienz und Flexibilität beim Schreiben objektorientierter Programme mit der Sprache C#. Es gibt kein erzwungenes Ein- und Auspacken von Werttypen oder Downcasting von Referenztypen, sodass die Leistung verbessert wird.

Leistungshinweise:

Bedenken Sie bei der Entscheidung, ob Sie IList verwenden möchten (beide haben ähnliche Funktionen), dass die IList-Klasse in den meisten Fällen die beste Leistung erbringt typsicher.

Wenn Sie einen Referenztyp für den Typ T der IList-Klasse verwenden, ist das Verhalten der beiden Klassen genau das gleiche. Wenn Sie jedoch einen Werttyp für Typ T verwenden, müssen Sie Implementierungs- und Boxing-Probleme berücksichtigen.

"Jede Referenz oder jeder Werttyp, der der ArrayList hinzugefügt wird, wird implizit in Object umgewandelt. Wenn es sich bei dem Element um einen Werttyp handelt, muss es beim Hinzufügen zur Liste in ein Boxing gesetzt werden, während Unboxing-Vorgänge ausgeführt werden Abrufvorgänge sowie Ein- und Auspackvorgänge verringern die Leistung; die Auswirkungen des Einpackens und Auspackens sind erheblich, wenn große Sammlungen wiederholt werden müssen. 🎜>

1 🎜>
Deklaration:

1. List mList = new List();

T ist der Typ der Elemente in der Liste, nehmen Sie nun den String-Typ als Beispiel

Zum Beispiel: List();

2. List (IEnumerable Collection);

Liste erstellen

Z.B. mit einer Sammlung als Parameter:

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

List testList = new List(temArr);

Element hinzufügen:


1. Add(T item) Füge ein Element hinzu

Zum Beispiel: mList.Add("John");

2. AddRange(IEnumerable Collection) Füge einen Satz von Elementen hinzu

Bsp.:

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

mList.AddRange(temArr);

3. Insert(int index, T item); Füge ein Element an der Indexposition hinzu

Beispiel: mList.Insert (1, „Hei“) ;

Elemente in der Liste durchlaufen:

Beispiel:
foreach (T element in mList)  T的类型与mList声明时一样
{
    Console.WriteLine(element);
}
Nach dem Login kopieren

Elemente löschen:
foreach (string s in mList)
{
    Console.WriteLine(s);
}
Nach dem Login kopieren


1. Remove(T item) löscht einen Wert

Zum Beispiel: mList.Remove("Hunter");

Löschen Sie das Element dessen Index index ist

Beispiel: mList.RemoveAt(0);

3. RemoveRange(int index, int count);

Von Beginn mit dem Indexindex , Anzahlelemente löschen

Beispiel: mList.RemoveRange(3, 2);

Bestimmen Sie, ob sich ein Element in der Liste befindet:

Liste enthält (T-Element) Gibt zurück wahr oder falsch, sehr praktisch

Beispiel:

Sortieren Sie die Elemente in der Liste:
if (mList.Contains("Hunter"))
{
    Console.WriteLine("There is Hunter in the list");
}
else
{
    mList.Add("Hunter");
    Console.WriteLine("Add Hunter successfully.");
}
Nach dem Login kopieren


List Sort () Standard ist der erste Buchstabe des Elements in aufsteigender Reihenfolge

Beispiel: mList.Sort();

kehrt die Reihenfolge der Elemente in der Liste um:

List Reverse ( ) kann in Verbindung mit List.Sort() verwendet werden, um den gewünschten Effekt zu erzielen

Zum Beispiel: mList.Sort();

List clear: List. mList.Clear();

Ermitteln Sie die Anzahl der Elemente in der Liste:

List. Count () Gibt einen int-Wert zurück

Beispiel:

int count = mList .Count ();

Console.WriteLine("Die Anzahl der Elemente in der Liste: " +count);


2. Erweiterte und leistungsstarke Methoden der Liste:

Liste verwendet als ein Beispiel:

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

mList.AddRange(temArr);

List.Find-Methode: Sucht nach Elementen, die den durch das angegebene Prädikat definierten Bedingungen entsprechen, und gibt das erste übereinstimmende Element in der gesamten Liste zurück.

public T Find(Predicate match);

Predicate ist ein Delegat der Methode. Wenn das an ihn übergebene Objekt mit den im Delegaten definierten Bedingungen übereinstimmt, gibt die Methode „true“ zurück. Die Elemente der aktuellen Liste werden einzeln an den Prädikat-Delegaten übergeben und in der Liste vorwärts verschoben, beginnend mit dem ersten Element und endend mit dem letzten Element. Die Verarbeitung stoppt, wenn eine Übereinstimmung gefunden wird.

Prädikat kann an eine Funktion oder einen Lambda-Ausdruck delegiert werden:

Delegiert an einen Lambda-Ausdruck:

Beispiel:

Delegieren an a Funktion:

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

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;
 }
Nach dem Login kopieren


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

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
Nach dem Login kopieren

委托给一个函数,这里用到上面的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);
 }
Nach dem Login kopieren

这时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);
   }
Nach dem Login kopieren

这时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);
  }
Nach dem Login kopieren

这时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);
}
Nach dem Login kopieren

这时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中文网!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!