Representa una colección de pares de clave y valor ordenados por claves a los que se puede tener acceso por clave y por índice.
Espacio de nombres: System.Collections
Ensamblado: mscorlib (en mscorlib.dll)
Visual Basic (Declaración)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class SortedList
Implements IDictionary, ICollection, IEnumerable, ICloneable
Dim instance As SortedList
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class SortedList : IDictionary, ICollection, IEnumerable,
ICloneable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class SortedList : IDictionary, ICollection, IEnumerable,
ICloneable
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
public class SortedList implements IDictionary, ICollection,
IEnumerable, ICloneable
SerializableAttribute
ComVisibleAttribute(true)
public class SortedList implements IDictionary, ICollection,
IEnumerable, ICloneable
Para obtener la versión genérica de esta colección, vea System.Collections.Generic.SortedList.
El acceso a un elemento de SortedList se puede obtener por su clave, al igual que con los elementos de una implementación de IDictionary, o por su índice, como con los elementos de una implementación de IList.
SortedList mantiene internamente dos matrices para almacenar los elementos de la lista; es decir, una matriz para las claves y otra para los valores asociados. Cada elemento es un par de clave y valor al que se puede obtener acceso como un objeto DictionaryEntry. Una clave no puede ser referencia de objeto null (Nothing en Visual Basic), pero un valor sí puede serlo.
La capacidad de SortedList es el número de elementos que SortedList puede contener. La capacidad inicial predeterminada de SortedList es 0. A medida que se agregan elementos a una colección SortedList, la capacidad aumenta automáticamente según lo requiera la reasignación. La capacidad se puede disminuir si se llama al método TrimToSize o si se establece explícitamente la propiedad Capacity.
Los elementos de SortedList se ordenan por claves en función de una implementación determinada de IComparer que se especifica al crear SortedList o de acuerdo con la implementación de IComparable proporcionada por las propias claves. En cualquier caso, SortedList no admite claves duplicadas.
La secuencia de índices se basa en la secuencia de ordenación. Cuando se agrega un elemento, se inserta en SortedList en el orden correcto y la indización se ajusta en consonancia. Cuando se quita un elemento, la indización también se ajusta en consonancia. Por lo tanto, el índice de un par de clave y valor específico puede cambiar a medida que se agregan o quitan elementos de la colección SortedList.
Las operaciones de SortedList suelen ser más lentas que las operaciones de Hashtable debido a la ordenación. Sin embargo, SortedList ofrece más flexibilidad, ya que permite el acceso a los valores mediante las claves asociadas o mediante los índices.
Se puede obtener acceso a los elementos de esta colección utilizando un índice de tipo entero. Los índices de esta colección están basados en cero.
La instrucción foreach del lenguaje C# (for each en Visual Basic) requiere el tipo de cada elemento de la colección. Como los elementos de SortedList son pares de clave y valor, el tipo del elemento no se corresponde con el tipo de la clave ni con el del valor. En su lugar, el tipo de elemento es la estructura DictionaryEntry. Por ejemplo:
foreach (DictionaryEntry de in mySortedList) {...}
For Each de As DictionaryEntry In mySortedList
...
Next myDE
La instrucción foreach es un contenedor del enumerador, que sólo permite la lectura pero no la escritura en la colección.
En el ejemplo siguiente se muestra cómo crear e inicializar una colección SortedList y cómo imprimir las claves y los valores.
Imports System
Imports System.Collections
Imports Microsoft.VisualBasic
Public Class SamplesSortedList
Public Shared Sub Main()
' Creates and initializes a new SortedList.
Dim mySL As New SortedList()
mySL.Add("First", "Hello")
mySL.Add("Second", "World")
mySL.Add("Third", "!")
' 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: !
using System;
using System.Collections;
public class SamplesSortedList {
public static void Main() {
// Creates and initializes a new SortedList.
SortedList mySL = new SortedList();
mySL.Add("First", "Hello");
mySL.Add("Second", "World");
mySL.Add("Third", "!");
// 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: !
*/
#using <system.dll>
using namespace System;
using namespace System::Collections;
public ref class SamplesSortedList
{
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();
}
};
int main()
{
// Creates and initializes a new SortedList.
SortedList^ mySL = gcnew SortedList;
mySL->Add( "First", "Hello" );
mySL->Add( "Second", "World" );
mySL->Add( "Third", "!" );
// 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:" );
SamplesSortedList::PrintKeysAndValues( mySL );
}
/*
This code produces the following output.
mySL
Count: 3
Capacity: 16
Keys and Values:
-KEY- -VALUE-
First: Hello
Second: World
Third: !
*/
import System.*;
import System.Collections.*;
public class SamplesSortedList
{
public static void main(String[] args)
{
// Creates and initializes a new SortedList.
SortedList mySL = new SortedList();
mySL.Add("First", "Hello");
mySL.Add("Second", "World");
mySL.Add("Third", "!");
// Displays the properties and values of the SortedList.
Console.WriteLine("mySL");
Console.WriteLine(" Count: {0}",
System.Convert.ToString(mySL.get_Count()));
Console.WriteLine(" Capacity: {0}",
System.Convert.ToString(mySL.get_Capacity()));
Console.WriteLine(" Keys and Values:");
PrintKeysAndValues(mySL);
} //main
public static void PrintKeysAndValues(SortedList myList)
{
Console.WriteLine("\t-KEY-\t-VALUE-");
for (int i = 0; i < myList.get_Count(); i++) {
Console.WriteLine("\t{0}:\t{1}", myList.GetKey(i),
myList.GetByIndex(i));
}
Console.WriteLine();
} //PrintKeysAndValues
} //SamplesSortedList
/*
This code produces the following output.
mySL
Count: 3
Capacity: 16
Keys and Values:
-KEY- -VALUE-
First: Hello
Second: World
Third: !
*/
System.Object
System.Collections.SortedList
Seguridad para subprocesos
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
SortedList puede admitir varios sistemas de lectura a la vez, siempre y cuando no se modifique la colección. Para garantizar la seguridad en la ejecución de los subprocesos de SortedList, todas las operaciones se deben realizar mediante el contenedor devuelto por el método Synchronized.
La enumeración a través de una colección es un procedimiento sin seguridad intrínseca para la ejecución de subprocesos. Incluso cuando una colección está sincronizada, otros subprocesos todavía pueden modificarla, lo que hace que el enumerador produzca una excepción. Con el fin de garantizar la seguridad para la ejecución de subprocesos durante la enumeración, se puede bloquear la colección durante toda la enumeración o detectar las excepciones resultantes de los cambios realizados por otros subprocesos.
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.
.NET Framework
Compatible con: 2.0, 1.1, 1.0
.NET Compact Framework
Compatible con: 2.0