Leer en inglés

Compartir a través de


NameObjectCollectionBase Clase

Definición

Proporciona la clase base abstract de una colección de claves de String y valores de Object asociados a los que se puede obtener acceso con la clave o con el índice.

C#
public abstract class NameObjectCollectionBase : System.Collections.ICollection
C#
public abstract class NameObjectCollectionBase : System.Collections.ICollection, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
C#
[System.Serializable]
public abstract class NameObjectCollectionBase : System.Collections.ICollection, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
Herencia
NameObjectCollectionBase
Derivado
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra cómo implementar y usar la NameObjectCollectionBase clase .

C#
using System;
using System.Collections;
using System.Collections.Specialized;

public class MyCollection : NameObjectCollectionBase
{
   // Creates an empty collection.
   public MyCollection()  {
   }

   // Adds elements from an IDictionary into the new collection.
   public MyCollection( IDictionary d, Boolean bReadOnly )  {
      foreach ( DictionaryEntry de in d )  {
         this.BaseAdd( (String) de.Key, de.Value );
      }
      this.IsReadOnly = bReadOnly;
   }

   // Gets a key-and-value pair (DictionaryEntry) using an index.
   public DictionaryEntry this[ int index ]  {
      get  {
          return ( new DictionaryEntry(
              this.BaseGetKey(index), this.BaseGet(index) ) );
      }
   }

   // Gets or sets the value associated with the specified key.
   public Object this[ String key ]  {
      get  {
         return( this.BaseGet( key ) );
      }
      set  {
         this.BaseSet( key, value );
      }
   }

   // Gets a String array that contains all the keys in the collection.
   public String[] AllKeys  {
      get  {
         return( this.BaseGetAllKeys() );
      }
   }

   // Gets an Object array that contains all the values in the collection.
   public Array AllValues  {
      get  {
         return( this.BaseGetAllValues() );
      }
   }

   // Gets a String array that contains all the values in the collection.
   public String[] AllStringValues  {
      get  {
         return( (String[]) this.BaseGetAllValues( typeof( string ) ));
      }
   }

   // Gets a value indicating if the collection contains keys that are not null.
   public Boolean HasKeys  {
      get  {
         return( this.BaseHasKeys() );
      }
   }

   // Adds an entry to the collection.
   public void Add( String key, Object value )  {
      this.BaseAdd( key, value );
   }

   // Removes an entry with the specified key from the collection.
   public void Remove( String key )  {
      this.BaseRemove( key );
   }

   // Removes an entry in the specified index from the collection.
   public void Remove( int index )  {
      this.BaseRemoveAt( index );
   }

   // Clears all the elements in the collection.
   public void Clear()  {
      this.BaseClear();
   }
}

public class SamplesNameObjectCollectionBase  {

   public static void Main()  {

      // Creates and initializes a new MyCollection that is read-only.
      IDictionary d = new ListDictionary();
      d.Add( "red", "apple" );
      d.Add( "yellow", "banana" );
      d.Add( "green", "pear" );
      MyCollection myROCol = new MyCollection( d, true );

      // Tries to add a new item.
      try  {
         myROCol.Add( "blue", "sky" );
      }
      catch ( NotSupportedException e )  {
         Console.WriteLine( e.ToString() );
      }

      // Displays the keys and values of the MyCollection.
      Console.WriteLine( "Read-Only Collection:" );
      PrintKeysAndValues( myROCol );

      // Creates and initializes an empty MyCollection that is writable.
      MyCollection myRWCol = new MyCollection();

      // Adds new items to the collection.
      myRWCol.Add( "purple", "grape" );
      myRWCol.Add( "orange", "tangerine" );
      myRWCol.Add( "black", "berries" );
      Console.WriteLine( "Writable Collection (after adding values):" );
      PrintKeysAndValues( myRWCol );

      // Changes the value of one element.
      myRWCol["orange"] = "grapefruit";
      Console.WriteLine( "Writable Collection (after changing one value):" );
      PrintKeysAndValues( myRWCol );

      // Removes one item from the collection.
      myRWCol.Remove( "black" );
      Console.WriteLine( "Writable Collection (after removing one value):" );
      PrintKeysAndValues( myRWCol );

      // Removes all elements from the collection.
      myRWCol.Clear();
      Console.WriteLine( "Writable Collection (after clearing the collection):" );
      PrintKeysAndValues( myRWCol );
   }

   // Prints the indexes, keys, and values.
   public static void PrintKeysAndValues( MyCollection myCol )  {
      for ( int i = 0; i < myCol.Count; i++ )  {
         Console.WriteLine( "[{0}] : {1}, {2}", i, myCol[i].Key, myCol[i].Value );
      }
   }

   // Prints the keys and values using AllKeys.
   public static void PrintKeysAndValues2( MyCollection myCol )  {
      foreach ( String s in myCol.AllKeys )  {
         Console.WriteLine( "{0}, {1}", s, myCol[s] );
      }
   }
}


/*
This code produces the following output.

System.NotSupportedException: Collection is read-only.
   at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd(String name, Object value)
   at SamplesNameObjectCollectionBase.Main()
Read-Only Collection:
[0] : red, apple
[1] : yellow, banana
[2] : green, pear
Writable Collection (after adding values):
[0] : purple, grape
[1] : orange, tangerine
[2] : black, berries
Writable Collection (after changing one value):
[0] : purple, grape
[1] : orange, grapefruit
[2] : black, berries
Writable Collection (after removing one value):
[0] : purple, grape
[1] : orange, grapefruit
Writable Collection (after clearing the collection):

*/

Comentarios

La estructura subyacente de esta clase es una tabla hash.

Cada elemento es un par clave-valor.

La capacidad de un NameObjectCollectionBase es el número de elementos que NameObjectCollectionBase puede contener. A medida que se agregan elementos a , NameObjectCollectionBasela capacidad aumenta automáticamente según sea necesario mediante la reasignación.

El proveedor de código hash dispensa códigos hash para las claves de la NameObjectCollectionBase instancia de . El proveedor de código hash predeterminado es CaseInsensitiveHashCodeProvider.

El comparador determina si dos claves son iguales. El comparador predeterminado es CaseInsensitiveComparer.

En .NET Framework versión 1.0, esta clase usa comparaciones de cadenas que distinguen referencias culturales. Sin embargo, en .NET Framework versión 1.1 y posteriores, esta clase usa CultureInfo.InvariantCulture al comparar cadenas. Para obtener más información sobre cómo afecta la referencia cultural a las comparaciones y la ordenación, vea Realizar operaciones de cadena Culture-Insensitive.

null se permite como clave o como valor.

Precaución

El BaseGet método no distingue entre null el que se devuelve porque no se encuentra la clave especificada y null que se devuelve porque el valor asociado a la clave es null.

Constructores

NameObjectCollectionBase()

Inicializa una nueva instancia de la clase NameObjectCollectionBase que está vacía.

NameObjectCollectionBase(IEqualityComparer)

Inicializa una nueva instancia de la clase NameObjectCollectionBase que está vacía, tiene la capacidad inicial predeterminada y usa el objeto IEqualityComparer especificado.

NameObjectCollectionBase(IHashCodeProvider, IComparer)
Obsoletos.
Obsoletos.

Inicializa una nueva instancia de la clase NameObjectCollectionBase que está vacía, tiene la capacidad inicial predeterminada y usa el proveedor de código hash y el comparador especificados.

NameObjectCollectionBase(Int32)

Inicializa una nueva instancia de la clase NameObjectCollectionBase que está vacía, tiene la capacidad inicial especificada y usa el proveedor de código hash y el comparador predeterminados.

NameObjectCollectionBase(Int32, IEqualityComparer)

Inicializa una nueva instancia de la clase NameObjectCollectionBase que está vacía, tiene la capacidad inicial especificada y usa el objeto IEqualityComparer especificado.

NameObjectCollectionBase(Int32, IHashCodeProvider, IComparer)
Obsoletos.
Obsoletos.

Inicializa una nueva instancia de la clase NameObjectCollectionBase que está vacía, tiene la capacidad inicial especificada y usa el proveedor de códigos hash y el comparador especificados.

NameObjectCollectionBase(SerializationInfo, StreamingContext)
Obsoletos.

Inicializa una nueva instancia de la clase NameObjectCollectionBase que es serializable y usa las clases SerializationInfo y StreamingContext especificadas.

Propiedades

Count

Obtiene el número de pares de clave y valor incluidos en la instancia NameObjectCollectionBase.

IsReadOnly

Obtiene o establece un valor que indica si la instancia NameObjectCollectionBase es de solo lectura.

Keys

Obtiene una instancia NameObjectCollectionBase.KeysCollection que contiene todas las claves de la instancia NameObjectCollectionBase.

Métodos

BaseAdd(String, Object)

Agrega una entrada con la clave y el valor especificados a la instancia NameObjectCollectionBase.

BaseClear()

Elimina todas las entradas de la instancia NameObjectCollectionBase.

BaseGet(Int32)

Obtiene el valor de la entrada que se encuentra en el índice especificado de la instancia NameObjectCollectionBase.

BaseGet(String)

Obtiene el valor de la primera entrada con la clave especificada desde la instancia NameObjectCollectionBase.

BaseGetAllKeys()

Devuelve una matriz String que contiene todas las claves de la instancia NameObjectCollectionBase.

BaseGetAllValues()

Devuelve una matriz Object que contiene todos los valores de la instancia NameObjectCollectionBase.

BaseGetAllValues(Type)

Devuelve una matriz del tipo especificado que contiene todos los valores de la instancia NameObjectCollectionBase.

BaseGetKey(Int32)

Obtiene la clave de la entrada que se encuentra en el índice especificado de la instancia NameObjectCollectionBase.

BaseHasKeys()

Obtiene un valor que indica si la instancia NameObjectCollectionBase contiene entradas cuyas claves no son null.

BaseRemove(String)

Quita las entradas con la clave especificada de la instancia de NameObjectCollectionBase.

BaseRemoveAt(Int32)

Elimina la entrada que se encuentra en el índice especificado de la instancia NameObjectCollectionBase.

BaseSet(Int32, Object)

Establece el valor de la entrada que se encuentra en el índice especificado de la instancia NameObjectCollectionBase.

BaseSet(String, Object)

Establece el valor de la primera entrada con la clave especificada de la instancia NameObjectCollectionBase, si la encuentra; en caso contrario, agrega una entrada con la clave y el valor especificados a la instancia NameObjectCollectionBase.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetEnumerator()

Devuelve un enumerador que recorre en iteración la colección NameObjectCollectionBase.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsoletos.

Implementa la interfaz de ISerializable y devuelve los datos necesarios para serializar la instancia de NameObjectCollectionBase.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnDeserialization(Object)

Implementa la interfaz ISerializable y genera el evento de deserialización cuando esta ha finalizado.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

ICollection.CopyTo(Array, Int32)

Copia la totalidad de NameObjectCollectionBase en una matriz Array unidimensional compatible, comenzando en el índice especificado de la matriz de destino.

ICollection.IsSynchronized

Obtiene un valor que indica si el acceso al objeto NameObjectCollectionBase está sincronizado (es seguro para subprocesos).

ICollection.SyncRoot

Obtiene un objeto que puede utilizarse para sincronizar el acceso al objeto NameObjectCollectionBase.

Métodos de extensión

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.

Se aplica a

Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Seguridad para subprocesos

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Esta implementación no proporciona un contenedor sincronizado (seguro para subprocesos) para una NameObjectCollectionBaseclase , pero las clases derivadas pueden crear sus propias versiones sincronizadas de NameObjectCollectionBase mediante la SyncRoot propiedad .

La enumeración a través de una colección no es intrínsecamente un procedimiento seguro para 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.

Consulte también