Heim >Backend-Entwicklung >C#.Net-Tutorial >Zusammenfassung der Verwendung von C# List

Zusammenfassung der Verwendung von C# List

高洛峰
高洛峰Original
2017-01-19 11:46:531546Durchsuche

Besitzender Namespace: System.Collections.Generic
öffentliche Klasse List8742468051c85b06f0a0af9e3e506b5c, ICollection8742468051c85b06f0a0af9e3e506b5c, IEnumerable8742468051c85b06f0a0af9e3e506b5c, IList, ICollection, IEnumerable

List8742468051c85b06f0a0af9e3e506b5c ;Class ist das generische Äquivalent der ArrayList-Klasse. Diese Klasse implementiert die generische Schnittstelle IList8742468051c85b06f0a0af9e3e506b5c 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 IList8742468051c85b06f0a0af9e3e506b5c verwenden möchten (beide haben ähnliche Funktionen), dass die IList8742468051c85b06f0a0af9e3e506b5c-Klasse in den meisten Fällen die beste Leistung erbringt typsicher.

Wenn Sie einen Referenztyp für den Typ T der IList8742468051c85b06f0a0af9e3e506b5c-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. List8742468051c85b06f0a0af9e3e506b5c mList = new List8742468051c85b06f0a0af9e3e506b5c();

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

Zum Beispiel: List98c455a79ddfebb79781bff588e7b37e();

2. List8742468051c85b06f0a0af9e3e506b5c (IEnumerable8742468051c85b06f0a0af9e3e506b5c Collection);

Liste erstellen

Z.B. mit einer Sammlung als Parameter:

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

List98c455a79ddfebb79781bff588e7b37e testList = new List98c455a79ddfebb79781bff588e7b37e(temArr);

Element hinzufügen:


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

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

2. AddRange(IEnumerable8742468051c85b06f0a0af9e3e506b5c 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);
}

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


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.");
}


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(Predicate8742468051c85b06f0a0af9e3e506b5c 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

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(Predicate8742468051c85b06f0a0af9e3e506b5c match);


用法与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中文网!

Stellungnahme:
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