SortedList Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta una raccolta di coppie chiave/valore ordinate in base alle chiavi e accessibili per chiave e per indice.
public ref class SortedList : System::Collections::IDictionary
public ref class SortedList : ICloneable, System::Collections::IDictionary
public class SortedList : 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
public class SortedList : ICloneable, System.Collections.IDictionary
type SortedList = class
interface ICollection
interface IEnumerable
interface IDictionary
[<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
type SortedList = class
interface ICollection
interface IEnumerable
interface IDictionary
interface ICloneable
Public Class SortedList
Implements IDictionary
Public Class SortedList
Implements ICloneable, IDictionary
- Ereditarietà
-
SortedList
- Attributi
- Implementazioni
Esempio
Nell'esempio di codice seguente viene illustrato come creare e inizializzare un SortedList oggetto e come stampare le chiavi e i valori.
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: !
Commenti
È possibile accedere a un SortedList elemento tramite la relativa chiave, ad esempio un elemento in qualsiasi IDictionary implementazione o tramite il relativo indice, come un elemento in qualsiasi IList implementazione.
Importante
Non è consigliabile usare la SortedList classe per il nuovo sviluppo. È invece consigliabile usare la classe generica System.Collections.Generic.SortedList<TKey,TValue>. Per altre informazioni, vedere Raccolte non generiche che non devono essere usate in GitHub.
Un SortedList oggetto gestisce internamente due matrici per archiviare gli elementi dell'elenco, ovvero una matrice per le chiavi e un'altra matrice per i valori associati. Ogni elemento è una coppia chiave/valore a cui è possibile accedere come DictionaryEntry oggetto . Una chiave non può essere null, ma un valore può essere .
La capacità di un SortedList oggetto è il numero di elementi che può SortedList contenere. Man mano che gli elementi vengono aggiunti a un SortedListoggetto , la capacità viene aumentata automaticamente in base alle esigenze tramite la riallocazione. La capacità può essere ridotta chiamando TrimToSize o impostando la Capacity proprietà in modo esplicito.
solo .NET Framework: Per oggetti SortedList di grandi dimensioni, è possibile aumentare la capacità massima a 2 miliardi di elementi in un sistema a 64 bit impostando l'attributo enabled dell'elemento di configurazione <gcAllowVeryLargeObjects> su true nell'ambiente di runtime.
Gli elementi di un SortedList oggetto vengono ordinati in base alle chiavi in base a un'implementazione specifica IComparer specificata quando SortedList viene creato o in base all'implementazione IComparable fornita dalle chiavi stesse. In entrambi i casi, un oggetto SortedList non consente chiavi duplicate.
La sequenza di indice è basata sulla sequenza di ordinamento. Quando viene aggiunto un elemento, viene inserito nell'ordinamento SortedList corretto e l'indicizzazione viene modificata di conseguenza. Quando un elemento viene rimosso, l'indicizzazione viene modificata di conseguenza. Di conseguenza, l'indice di una coppia chiave/valore specifica può cambiare man mano che gli elementi vengono aggiunti o rimossi dall'oggetto SortedList .
Le operazioni su un SortedList oggetto tendono a essere più lente rispetto alle operazioni su un Hashtable oggetto a causa dell'ordinamento. Tuttavia, offre SortedList maggiore flessibilità consentendo l'accesso ai valori tramite le chiavi associate o tramite gli indici.
È possibile accedere a elementi di questa raccolta usando un indice integer. Gli indici in questa raccolta sono in base zero.
L'istruzione foreach del linguaggio C# (for each in Visual Basic) restituisce un oggetto del tipo degli elementi nella raccolta. Poiché ogni elemento dell'oggetto SortedList è una coppia chiave/valore, il tipo di elemento non è il tipo della chiave o il tipo del valore. Il tipo di elemento è DictionaryEntryinvece . Per esempio:
foreach (DictionaryEntry de in mySortedList)
{
//...
}
For Each de As DictionaryEntry In mySortedList
'...
Next de
L'istruzione foreach è un wrapper intorno all'enumeratore, che consente solo la lettura, non la scrittura nella raccolta.
Costruttori
| Nome | Descrizione |
|---|---|
| SortedList() |
Inizializza una nuova istanza della SortedList classe vuota, ha la capacità iniziale predefinita e viene ordinata in base all'interfaccia IComparable implementata da ogni chiave aggiunta all'oggetto SortedList . |
| SortedList(IComparer, Int32) |
Inizializza una nuova istanza della SortedList classe vuota, ha la capacità iniziale specificata e viene ordinata in base all'interfaccia specificata IComparer . |
| SortedList(IComparer) |
Inizializza una nuova istanza della SortedList classe vuota, ha la capacità iniziale predefinita e viene ordinata in base all'interfaccia specificata IComparer . |
| SortedList(IDictionary, IComparer) |
Inizializza una nuova istanza della SortedList classe che contiene elementi copiati dal dizionario specificato, ha la stessa capacità iniziale del numero di elementi copiati e viene ordinata in base all'interfaccia specificata IComparer . |
| SortedList(IDictionary) |
Inizializza una nuova istanza della SortedList classe che contiene elementi copiati dal dizionario specificato, ha la stessa capacità iniziale del numero di elementi copiati e viene ordinata in base all'interfaccia IComparable implementata da ogni chiave. |
| SortedList(Int32) |
Inizializza una nuova istanza della SortedList classe vuota, ha la capacità iniziale specificata e viene ordinata in base all'interfaccia IComparable implementata da ogni chiave aggiunta all'oggetto SortedList . |
Proprietà
| Nome | Descrizione |
|---|---|
| Capacity |
Ottiene o imposta la capacità di un SortedList oggetto . |
| Count |
Ottiene il numero di elementi contenuti in un SortedList oggetto . |
| IsFixedSize |
Ottiene un valore che indica se un SortedList oggetto ha una dimensione fissa. |
| IsReadOnly |
Ottiene un valore che indica se un SortedList oggetto è di sola lettura. |
| IsSynchronized |
Ottiene un valore che indica se l'accesso a un SortedList oggetto è sincronizzato (thread-safe). |
| Item[Object] |
Ottiene o imposta il valore associato a una chiave specifica in un SortedList oggetto . |
| Keys |
Ottiene le chiavi in un SortedList oggetto . |
| SyncRoot |
Ottiene un oggetto che può essere utilizzato per sincronizzare l'accesso a un SortedList oggetto . |
| Values |
Ottiene i valori in un SortedList oggetto . |
Metodi
| Nome | Descrizione |
|---|---|
| Add(Object, Object) |
Aggiunge un elemento con la chiave e il valore specificati a un SortedList oggetto . |
| Clear() |
Rimuove tutti gli elementi da un SortedList oggetto . |
| Clone() |
Crea una copia superficiale di un SortedList oggetto . |
| Contains(Object) |
Determina se un SortedList oggetto contiene una chiave specifica. |
| ContainsKey(Object) |
Determina se un SortedList oggetto contiene una chiave specifica. |
| ContainsValue(Object) |
Determina se un SortedList oggetto contiene un valore specifico. |
| CopyTo(Array, Int32) |
Copia SortedList gli elementi in un oggetto unidimensionale Array , a partire dall'indice specificato nella matrice. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetByIndex(Int32) |
Ottiene il valore in corrispondenza dell'indice specificato di un SortedList oggetto . |
| GetEnumerator() |
Restituisce un IDictionaryEnumerator oggetto che scorre un SortedList oggetto . |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetKey(Int32) |
Ottiene la chiave in corrispondenza dell'indice specificato di un SortedList oggetto . |
| GetKeyList() |
Ottiene le chiavi in un SortedList oggetto . |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| GetValueList() |
Ottiene i valori in un SortedList oggetto . |
| IndexOfKey(Object) |
Restituisce l'indice in base zero della chiave specificata in un SortedList oggetto . |
| IndexOfValue(Object) |
Restituisce l'indice in base zero della prima occorrenza del valore specificato in un SortedList oggetto . |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| Remove(Object) |
Rimuove l'elemento con la chiave specificata da un SortedList oggetto . |
| RemoveAt(Int32) |
Rimuove l'elemento in corrispondenza dell'indice specificato di un SortedList oggetto . |
| SetByIndex(Int32, Object) |
Sostituisce il valore in corrispondenza di un indice specifico in un SortedList oggetto . |
| Synchronized(SortedList) |
Restituisce un wrapper sincronizzato (thread-safe) per un SortedList oggetto . |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
| TrimToSize() |
Imposta la capacità sul numero effettivo di elementi in un SortedList oggetto . |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IEnumerable.GetEnumerator() |
Restituisce un oggetto IEnumerator che scorre l'oggetto SortedList. |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| AsParallel(IEnumerable) |
Abilita la parallelizzazione di una query. |
| AsQueryable(IEnumerable) |
Converte un IEnumerable in un IQueryable. |
| Cast<TResult>(IEnumerable) |
Esegue il cast degli elementi di un IEnumerable al tipo specificato. |
| OfType<TResult>(IEnumerable) |
Filtra gli elementi di un IEnumerable in base a un tipo specificato. |
Si applica a
Thread safety
I membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. Non è garantito che tutti i membri dell'istanza siano thread-safe.
Un SortedList oggetto può supportare contemporaneamente più lettori, purché la raccolta non venga modificata. Per garantire la thread safety del SortedList, tutte le operazioni devono essere eseguite tramite il wrapper restituito dal metodo Synchronized(SortedList).
L'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Anche quando una raccolta viene sincronizzata, altri thread possono comunque modificare la raccolta, causando la generazione di un'eccezione da parte dell'enumeratore. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione o intercettare le eccezioni risultanti dalle modifiche apportate da altri thread.