SortedList Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine Auflistung von Schlüssel-Wert-Paaren dar, die nach den Schlüsseln sortiert sind und nach Schlüsseln und nach Index zugänglich sind.
public ref class SortedList : System::Collections::IDictionary
public ref class SortedList : ICloneable, System::Collections::IDictionary
public class SortedList : System.Collections.IDictionary
public class SortedList : ICloneable, System.Collections.IDictionary
[System.Serializable]
public class SortedList : ICloneable, System.Collections.IDictionary
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class SortedList : ICloneable, System.Collections.IDictionary
type SortedList = class
interface ICollection
interface IEnumerable
interface IDictionary
type SortedList = class
interface ICollection
interface IEnumerable
interface IDictionary
interface ICloneable
[<System.Serializable>]
type SortedList = class
interface IDictionary
interface ICollection
interface IEnumerable
interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SortedList = class
interface IDictionary
interface ICollection
interface IEnumerable
interface ICloneable
Public Class SortedList
Implements IDictionary
Public Class SortedList
Implements ICloneable, IDictionary
- Vererbung
-
SortedList
- Attribute
- Implementiert
Beispiele
Das folgende Codebeispiel zeigt, wie Ein SortedList Objekt erstellt und initialisiert und wie die zugehörigen Schlüssel und Werte gedruckt werden.
using System;
using System.Collections;
public class SamplesSortedList2
{
public static void Main()
{
// Creates and initializes a new SortedList.
SortedList mySL = new SortedList();
mySL.Add("Third", "!");
mySL.Add("Second", "World");
mySL.Add("First", "Hello");
// Displays the properties and values of the SortedList.
Console.WriteLine("mySL");
Console.WriteLine(" Count: {0}", mySL.Count);
Console.WriteLine(" Capacity: {0}", mySL.Capacity);
Console.WriteLine(" Keys and Values:");
PrintKeysAndValues(mySL);
}
public static void PrintKeysAndValues(SortedList myList)
{
Console.WriteLine("\t-KEY-\t-VALUE-");
for (int i = 0; i < myList.Count; i++)
{
Console.WriteLine("\t{0}:\t{1}", myList.GetKey(i), myList.GetByIndex(i));
}
Console.WriteLine();
}
}
/*
This code produces the following output.
mySL
Count: 3
Capacity: 16
Keys and Values:
-KEY- -VALUE-
First: Hello
Second: World
Third: !
*/
Imports System.Collections
Public Class SamplesSortedList
Public Shared Sub Main()
' Creates and initializes a new SortedList.
Dim mySL As New SortedList()
mySL.Add("Third", "!")
mySL.Add("Second", "World")
mySL.Add("First", "Hello")
' Displays the properties and values of the SortedList.
Console.WriteLine("mySL")
Console.WriteLine(" Count: {0}", mySL.Count)
Console.WriteLine(" Capacity: {0}", mySL.Capacity)
Console.WriteLine(" Keys and Values:")
PrintKeysAndValues(mySL)
End Sub
Public Shared Sub PrintKeysAndValues(myList As SortedList)
Console.WriteLine(ControlChars.Tab & "-KEY-" & ControlChars.Tab & _
"-VALUE-")
Dim i As Integer
For i = 0 To myList.Count - 1
Console.WriteLine(ControlChars.Tab & "{0}:" & ControlChars.Tab & _
"{1}", myList.GetKey(i), myList.GetByIndex(i))
Next i
Console.WriteLine()
End Sub
End Class
' This code produces the following output.
'
' mySL
' Count: 3
' Capacity: 16
' Keys and Values:
' -KEY- -VALUE-
' First: Hello
' Second: World
' Third: !
Hinweise
Auf ein SortedList Element kann über seinen Schlüssel zugegriffen werden, z. B. ein Element in jeder IDictionary Implementierung oder durch seinen Index, wie ein Element in jeder IList Implementierung.
Von Bedeutung
Es wird nicht empfohlen, die SortedList Klasse für die neue Entwicklung zu verwenden. Stattdessen wird empfohlen, die generische System.Collections.Generic.SortedList<TKey,TValue> Klasse zu verwenden. Weitere Informationen finden Sie unter "Nicht generische Sammlungen", die nicht auf GitHub verwendet werden sollten .
Ein SortedList Objekt verwaltet intern zwei Arrays, um die Elemente der Liste zu speichern, d. h. ein Array für die Schlüssel und ein anderes Array für die zugeordneten Werte. Jedes Element ist ein Schlüssel-Wert-Paar, auf das als DictionaryEntry Objekt zugegriffen werden kann. Ein Schlüssel kann nicht sein null, aber ein Wert kann sein.
Die Kapazität eines SortedList Objekts ist die Anzahl der Elemente, die aufbewahrt SortedList werden können. Wenn Elemente zu einem SortedListElement hinzugefügt werden, wird die Kapazität bei Bedarf durch Umschichtung automatisch erhöht. Die Kapazität kann durch Aufrufen TrimToSize oder explizites Festlegen der Capacity Eigenschaft verringert werden.
Nur .NET Framework: Bei sehr großen SortedList Objekten können Sie die maximale Kapazität auf 2 Milliarden Elemente auf einem 64-Bit-System erhöhen, indem Sie das enabled Attribut des <gcAllowVeryLargeObjects> Konfigurationselements true in der Laufzeitumgebung festlegen.
Die Elemente eines SortedList Objekts werden entweder nach den Schlüsseln nach einer bestimmten IComparer Implementierung sortiert, die SortedList bei der Erstellung oder gemäß der IComparable implementierung angegeben wird, die von den Schlüsseln selbst bereitgestellt wird. In beiden Fällen lässt ein SortedList Schlüsselduplikat nicht zu.
Die Indexsequenz basiert auf der Sortierreihenfolge. Wenn ein Element hinzugefügt wird, wird es in die richtige Sortierreihenfolge eingefügt SortedList , und die Indizierung wird entsprechend angepasst. Wenn ein Element entfernt wird, wird die Indizierung ebenfalls entsprechend angepasst. Daher kann sich der Index eines bestimmten Schlüssel-Wert-Paares ändern, wenn Elemente hinzugefügt oder aus dem SortedList Objekt entfernt werden.
Vorgänge für ein SortedList Objekt sind aufgrund der Sortierung tendenziell langsamer als Vorgänge für ein Hashtable Objekt. Dies SortedList bietet jedoch mehr Flexibilität, indem der Zugriff auf die Werte entweder über die zugeordneten Schlüssel oder über die Indizes ermöglicht wird.
Auf Elemente in dieser Auflistung kann mithilfe eines ganzzahligen Index zugegriffen werden. Indizes in dieser Auflistung sind nullbasiert.
Die foreach Anweisung der C#-Sprache (for each in Visual Basic) gibt ein Objekt des Typs der Elemente in der Auflistung zurück. Da jedes Element des SortedList Objekts ein Schlüssel-Wert-Paar ist, ist der Elementtyp nicht der Typ des Schlüssels oder des Typs des Werts. Stattdessen ist DictionaryEntryder Elementtyp . Beispiel:
foreach (DictionaryEntry de in mySortedList)
{
//...
}
For Each de As DictionaryEntry In mySortedList
'...
Next de
Die foreach Anweisung ist ein Wrapper um den Enumerator, der nur das Lesen von , nicht schreiben in die Auflistung ermöglicht.
Konstruktoren
| Name | Beschreibung |
|---|---|
| SortedList() |
Initialisiert eine neue Instanz der klasse, die SortedList leer ist, hat die Standard-Anfangskapazität und wird nach der Schnittstelle sortiert, die IComparable von jedem Schlüssel implementiert wird, der das SortedList Objekt hinzugefügt hat. |
| SortedList(IComparer, Int32) |
Initialisiert eine neue Instanz der klasse, die SortedList leer ist, die angegebene Anfangskapazität hat und nach der angegebenen IComparer Schnittstelle sortiert wird. |
| SortedList(IComparer) |
Initialisiert eine neue Instanz der klasse, die SortedList leer ist, verfügt über die Standard-Anfangskapazität und wird entsprechend der angegebenen IComparer Schnittstelle sortiert. |
| SortedList(IDictionary, IComparer) |
Initialisiert eine neue Instanz der SortedList Klasse, die Elemente enthält, die aus dem angegebenen Wörterbuch kopiert wurden, hat die gleiche Anfangskapazität wie die Anzahl der kopierten Elemente und wird entsprechend der angegebenen IComparer Schnittstelle sortiert. |
| SortedList(IDictionary) |
Initialisiert eine neue Instanz der SortedList Klasse, die Elemente enthält, die aus dem angegebenen Wörterbuch kopiert wurden, hat die gleiche Anfangskapazität wie die Anzahl der kopierten Elemente und wird nach der Schnittstelle sortiert, die IComparable von jedem Schlüssel implementiert wird. |
| SortedList(Int32) |
Initialisiert eine neue Instanz der Klasse, die SortedList leer ist, die angegebene Anfangskapazität hat und nach der Schnittstelle sortiert wird, die IComparable von jedem Schlüssel implementiert wird, der dem SortedList Objekt hinzugefügt wurde. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Capacity |
Dient zum Abrufen oder Festlegen der Kapazität eines SortedList Objekts. |
| Count |
Ruft die Anzahl der in einem SortedList Objekt enthaltenen Elemente ab. |
| IsFixedSize |
Ruft einen Wert ab, der angibt, ob ein SortedList Objekt eine feste Größe aufweist. |
| IsReadOnly |
Ruft einen Wert ab, der angibt, ob ein SortedList Objekt schreibgeschützt ist. |
| IsSynchronized |
Ruft einen Wert ab, der angibt, ob der Zugriff auf ein SortedList Objekt synchronisiert wird (Threadsicher). |
| Item[Object] |
Dient zum Abrufen oder Festlegen des Werts, der einem bestimmten Schlüssel in einem SortedList Objekt zugeordnet ist. |
| Keys |
Ruft die Schlüssel in einem SortedList Objekt ab. |
| SyncRoot |
Ruft ein Objekt ab, das zum Synchronisieren des Zugriffs auf ein SortedList Objekt verwendet werden kann. |
| Values |
Ruft die Werte in einem SortedList Objekt ab. |
Methoden
| Name | Beschreibung |
|---|---|
| Add(Object, Object) |
Fügt einem SortedList Objekt ein Element mit dem angegebenen Schlüssel und Wert hinzu. |
| Clear() |
Entfernt alle Elemente aus einem SortedList Objekt. |
| Clone() |
Erstellt eine flache Kopie eines SortedList Objekts. |
| Contains(Object) |
Bestimmt, ob ein SortedList Objekt einen bestimmten Schlüssel enthält. |
| ContainsKey(Object) |
Bestimmt, ob ein SortedList Objekt einen bestimmten Schlüssel enthält. |
| ContainsValue(Object) |
Bestimmt, ob ein SortedList Objekt einen bestimmten Wert enthält. |
| CopyTo(Array, Int32) |
Kopiert SortedList Elemente in ein eindimensionales Array Objekt, beginnend am angegebenen Index im Array. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetByIndex(Int32) |
Ruft den Wert am angegebenen Index eines SortedList Objekts ab. |
| GetEnumerator() |
Gibt ein IDictionaryEnumerator Objekt zurück, das ein SortedList Objekt durchläuft. |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetKey(Int32) |
Ruft den Schlüssel am angegebenen Index eines SortedList Objekts ab. |
| GetKeyList() |
Ruft die Schlüssel in einem SortedList Objekt ab. |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| GetValueList() |
Ruft die Werte in einem SortedList Objekt ab. |
| IndexOfKey(Object) |
Gibt den nullbasierten Index des angegebenen Schlüssels in einem SortedList Objekt zurück. |
| IndexOfValue(Object) |
Gibt den nullbasierten Index des ersten Vorkommens des angegebenen Werts in einem SortedList Objekt zurück. |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| Remove(Object) |
Entfernt das Element mit dem angegebenen Schlüssel aus einem SortedList Objekt. |
| RemoveAt(Int32) |
Entfernt das Element am angegebenen Index eines SortedList Objekts. |
| SetByIndex(Int32, Object) |
Ersetzt den Wert bei einem bestimmten Index in einem SortedList Objekt. |
| Synchronized(SortedList) |
Gibt einen synchronisierten (threadsicheren) Wrapper für ein SortedList Objekt zurück. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
| TrimToSize() |
Legt die Kapazität auf die tatsächliche Anzahl von Elementen in einem SortedList Objekt fest. |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IEnumerable.GetEnumerator() |
Gibt einen IEnumerator Wert zurück, der durch die SortedList. |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| AsParallel(IEnumerable) |
Aktiviert die Parallelisierung einer Abfrage. |
| AsQueryable(IEnumerable) |
Wandelt eine IEnumerable in eine IQueryableum. |
| Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um. |
| OfType<TResult>(IEnumerable) |
Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ. |
Gilt für:
Threadsicherheit
Öffentliche statische Elemente (Shared in Visual Basic) dieses Typs sind threadsicher. Instanzenmitglieder sind nicht garantiert threadsicher.
Ein SortedList Objekt kann mehrere Leser gleichzeitig unterstützen, solange die Auflistung nicht geändert wird. Um die Threadsicherheit des Threads SortedListzu gewährleisten, müssen alle Vorgänge über den wrapper erfolgen, der von der Synchronized(SortedList) Methode zurückgegeben wird.
Das Aufzählen durch eine Sammlung ist in erster Linie keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, können andere Threads die Auflistung weiterhin ändern, wodurch der Enumerator eine Ausnahme auslöst. Um die Threadsicherheit während der Enumeration zu gewährleisten, können Sie die Auflistung entweder während der gesamten Enumeration sperren oder die Ausnahmen erfassen, die sich aus Änderungen ergeben, die von anderen Threads vorgenommen wurden.