NameObjectCollectionBase Klass

Definition

Tillhandahåller basklassen abstract för en samling associerade String nycklar och Object värden som kan nås antingen med nyckeln eller med indexet.

public ref class NameObjectCollectionBase abstract : System::Collections::ICollection
public ref class NameObjectCollectionBase abstract : System::Collections::ICollection, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public abstract class NameObjectCollectionBase : System.Collections.ICollection
[System.Serializable]
public abstract class NameObjectCollectionBase : System.Collections.ICollection, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public abstract class NameObjectCollectionBase : System.Collections.ICollection, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type NameObjectCollectionBase = class
    interface ICollection
    interface IEnumerable
[<System.Serializable>]
type NameObjectCollectionBase = class
    interface ICollection
    interface IEnumerable
    interface ISerializable
    interface IDeserializationCallback
type NameObjectCollectionBase = class
    interface ICollection
    interface IEnumerable
    interface IDeserializationCallback
    interface ISerializable
Public MustInherit Class NameObjectCollectionBase
Implements ICollection
Public MustInherit Class NameObjectCollectionBase
Implements ICollection, IDeserializationCallback, ISerializable
Arv
NameObjectCollectionBase
Härledda
Attribut
Implementeringar

Exempel

I följande kodexempel visas hur du implementerar och använder NameObjectCollectionBase klassen.

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

*/
Imports System.Collections
Imports System.Collections.Specialized

Public Class MyCollection
   Inherits NameObjectCollectionBase

   ' Creates an empty collection.
   Public Sub New()
   End Sub

   ' Adds elements from an IDictionary into the new collection.
   Public Sub New(d As IDictionary, bReadOnly As Boolean)
      Dim de As DictionaryEntry
      For Each de In  d
         Me.BaseAdd(CType(de.Key, String), de.Value)
      Next de
      Me.IsReadOnly = bReadOnly
   End Sub

   ' Gets a key-and-value pair (DictionaryEntry) using an index.
   Default Public ReadOnly Property Item(index As Integer) As DictionaryEntry
      Get
            return new DictionaryEntry( _
                me.BaseGetKey(index), me.BaseGet(index) )
      End Get
   End Property

   ' Gets or sets the value associated with the specified key.
   Default Public Property Item(key As String) As Object
      Get
         Return Me.BaseGet(key)
      End Get
      Set
         Me.BaseSet(key, value)
      End Set
   End Property

   ' Gets a String array that contains all the keys in the collection.
   Public ReadOnly Property AllKeys() As String()
      Get
         Return Me.BaseGetAllKeys()
      End Get
   End Property

   ' Gets an Object array that contains all the values in the collection.
   Public ReadOnly Property AllValues() As Array
      Get
         Return Me.BaseGetAllValues()
      End Get
   End Property

   ' Gets a String array that contains all the values in the collection.
   Public ReadOnly Property AllStringValues() As String()
      Get
         Return CType(Me.BaseGetAllValues(GetType(String)), String())
      End Get
   End Property

   ' Gets a value indicating if the collection contains keys that are not null.
   Public ReadOnly Property HasKeys() As Boolean
      Get
         Return Me.BaseHasKeys()
      End Get
   End Property

   ' Adds an entry to the collection.
   Public Sub Add(key As String, value As Object)
      Me.BaseAdd(key, value)
   End Sub

   ' Removes an entry with the specified key from the collection.
   Overloads Public Sub Remove(key As String)
      Me.BaseRemove(key)
   End Sub

   ' Removes an entry in the specified index from the collection.
   Overloads Public Sub Remove(index As Integer)
      Me.BaseRemoveAt(index)
   End Sub

   ' Clears all the elements in the collection.
   Public Sub Clear()
      Me.BaseClear()
   End Sub

End Class


Public Class SamplesNameObjectCollectionBase   

   Public Shared Sub Main()

      ' Creates and initializes a new MyCollection that is read-only.
      Dim d As New ListDictionary()
      d.Add("red", "apple")
      d.Add("yellow", "banana")
      d.Add("green", "pear")
      Dim myROCol As New MyCollection(d, True)

      ' Tries to add a new item.
      Try
         myROCol.Add("blue", "sky")
      Catch e As NotSupportedException
         Console.WriteLine(e.ToString())
      End Try

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

      ' Creates and initializes an empty MyCollection that is writable.
      Dim myRWCol As 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)

   End Sub

   ' Prints the indexes, keys, and values.
   Public Shared Sub PrintKeysAndValues(myCol As MyCollection)
      Dim i As Integer
      For i = 0 To myCol.Count - 1
         Console.WriteLine("[{0}] : {1}, {2}", i, myCol(i).Key, myCol(i).Value)
      Next i
   End Sub

   ' Prints the keys and values using AllKeys.
   Public Shared Sub PrintKeysAndValues2(myCol As MyCollection)
      Dim s As String
      For Each s In  myCol.AllKeys
         Console.WriteLine("{0}, {1}", s, myCol(s))
      Next s
   End Sub

End Class


'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):

Kommentarer

Den underliggande strukturen för den här klassen är en hash-tabell.

Varje element är ett nyckel/värde-par.

Kapaciteten för en NameObjectCollectionBase är antalet element som NameObjectCollectionBase kan hållas. När element läggs till i en NameObjectCollectionBaseökar kapaciteten automatiskt efter behov genom omallokering.

Hash-kodprovidern delar ut hash-koder för nycklar i instansen NameObjectCollectionBase . Standard-hash-kodprovidern CaseInsensitiveHashCodeProviderär .

Jämförelsen avgör om två nycklar är lika med. Standardjäxaren är CaseInsensitiveComparer.

I .NET Framework version 1.0 använder den här klassen kulturkänsliga strängjämförelser. Men i .NET Framework version 1.1 och senare använder den här klassen CultureInfo.InvariantCulture vid jämförelse av strängar. Mer information om hur kultur påverkar jämförelser och sortering finns i Utföra Culture-Insensitive strängåtgärder.

null tillåts som en nyckel eller som ett värde.

Caution

Metoden BaseGet skiljer inte mellan null som returneras eftersom den angivna nyckeln inte hittas och null som returneras eftersom värdet som är associerat med nyckeln är null.

Konstruktorer

Name Description
NameObjectCollectionBase()

Initierar en ny instans av NameObjectCollectionBase klassen som är tom.

NameObjectCollectionBase(IEqualityComparer)

Initierar en ny instans av NameObjectCollectionBase klassen som är tom, har standardinitieringskapaciteten och använder det angivna IEqualityComparer objektet.

NameObjectCollectionBase(IHashCodeProvider, IComparer)
Föråldrad.

Initierar en ny instans av NameObjectCollectionBase klassen som är tom, har standardinitieringskapaciteten och använder den angivna hash-kodprovidern och den angivna jämförelsen.

NameObjectCollectionBase(Int32, IEqualityComparer)

Initierar en ny instans av NameObjectCollectionBase klassen som är tom, har den angivna initiala kapaciteten och använder det angivna IEqualityComparer objektet.

NameObjectCollectionBase(Int32, IHashCodeProvider, IComparer)
Föråldrad.

Initierar en ny instans av NameObjectCollectionBase klassen som är tom, har den angivna initiala kapaciteten och använder den angivna hash-kodprovidern och den angivna jämförelsen.

NameObjectCollectionBase(Int32)

Initierar en ny instans av NameObjectCollectionBase klassen som är tom, har den angivna initiala kapaciteten och använder standard-hash-kodprovidern och standardjäxaren.

NameObjectCollectionBase(SerializationInfo, StreamingContext)

Initierar en ny instans av NameObjectCollectionBase klassen som är serialiserbar och använder angiven SerializationInfo och StreamingContext.

Egenskaper

Name Description
Count

Hämtar antalet nyckel/värde-par som finns i instansen NameObjectCollectionBase .

IsReadOnly

Hämtar eller anger ett värde som anger om instansen NameObjectCollectionBase är skrivskyddad.

Keys

Hämtar en NameObjectCollectionBase.KeysCollection instans som innehåller alla nycklar i instansen NameObjectCollectionBase .

Metoder

Name Description
BaseAdd(String, Object)

Lägger till en post med den angivna nyckeln och värdet i instansen NameObjectCollectionBase .

BaseClear()

Tar bort alla poster från instansen NameObjectCollectionBase .

BaseGet(Int32)

Hämtar värdet för posten vid det angivna indexet för instansen NameObjectCollectionBase .

BaseGet(String)

Hämtar värdet för den första posten med den angivna nyckeln från instansen NameObjectCollectionBase .

BaseGetAllKeys()

Returnerar en String matris som innehåller alla nycklar i instansen NameObjectCollectionBase .

BaseGetAllValues()

Returnerar en Object matris som innehåller alla värden i instansen NameObjectCollectionBase .

BaseGetAllValues(Type)

Returnerar en matris av den angivna typen som innehåller alla värden i instansen NameObjectCollectionBase .

BaseGetKey(Int32)

Hämtar nyckeln för posten vid det angivna indexet för instansen NameObjectCollectionBase .

BaseHasKeys()

Hämtar ett värde som anger om instansen NameObjectCollectionBase innehåller poster vars nycklar inte nullär .

BaseRemove(String)

Tar bort posterna med den angivna nyckeln från instansen NameObjectCollectionBase .

BaseRemoveAt(Int32)

Tar bort posten vid det angivna indexet för instansen NameObjectCollectionBase .

BaseSet(Int32, Object)

Anger värdet för posten vid det angivna indexet för instansen NameObjectCollectionBase .

BaseSet(String, Object)

Anger värdet för den första posten med den angivna nyckeln i instansen, om den NameObjectCollectionBase hittas. Annars lägger du till en post med den angivna nyckeln och värdet i instansen NameObjectCollectionBase .

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetEnumerator()

Returnerar en uppräkning som itererar genom NameObjectCollectionBase.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetObjectData(SerializationInfo, StreamingContext)

Implementerar ISerializable gränssnittet och returnerar de data som behövs för att serialisera instansen NameObjectCollectionBase .

GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnDeserialization(Object)

Implementerar ISerializable gränssnittet och höjer deserialiseringshändelsen när deserialiseringen är klar.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

Name Description
ICollection.CopyTo(Array, Int32)

Kopierar hela NameObjectCollectionBase till en kompatibel endimensionell Array, med början vid det angivna indexet för målmatrisen.

ICollection.IsSynchronized

Hämtar ett värde som anger om åtkomsten NameObjectCollectionBase till objektet synkroniseras (trådsäker).

ICollection.SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomsten NameObjectCollectionBase till objektet.

Tilläggsmetoder

Name Description
AsParallel(IEnumerable)

Möjliggör parallellisering av en fråga.

AsQueryable(IEnumerable)

Konverterar en IEnumerable till en IQueryable.

Cast<TResult>(IEnumerable)

Omvandlar elementen i en IEnumerable till den angivna typen.

OfType<TResult>(IEnumerable)

Filtrerar elementen i en IEnumerable baserat på en angiven typ.

Gäller för

Trådsäkerhet

Offentliga statiska (Shared i Visual Basic) medlemmar av den här typen är trådsäkra. Vilka som helst instansmedlemmar garanteras inte att vara trådsäkra.

Den här implementeringen tillhandahåller ingen synkroniserad (trådsäker) omslutning för en NameObjectCollectionBase, men härledda klasser kan skapa sina egna synkroniserade versioner av NameObjectCollectionBase egenskapen SyncRoot .

Att räkna upp genom en samling är i sig inte en trådsäker procedur. Även när en samling synkroniseras kan andra trådar fortfarande ändra samlingen, vilket gör att uppräknaren genererar ett undantag. För att garantera trådsäkerheten under uppräkningen kan du antingen låsa samlingen under hela uppräkningen eller fånga undantagen från ändringar som gjorts av andra trådar.

Se även