NameObjectCollectionBase Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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 |
| 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.