NameObjectCollectionBase Sınıf

Tanım

abstract Anahtarla veya dizinle erişilebilen ilişkili String anahtarlar ve Object değerler koleksiyonu için temel sınıfı sağlar.

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
Devralma
NameObjectCollectionBase
Türetilmiş
Öznitelikler
Uygulamalar

Örnekler

Aşağıdaki kod örneği, sınıfının nasıl uygulanıp kullanılacağını NameObjectCollectionBase gösterir.

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

*/

Açıklamalar

Bu sınıfın temel yapısı bir karma tablodur.

Her öğe bir anahtar/değer çiftidir.

' NameObjectCollectionBase nin kapasitesi, barındırabileceği öğelerin NameObjectCollectionBase sayısıdır. öğesine öğeler eklendikçe NameObjectCollectionBasekapasite, yeniden ayırma işlemiyle gerektiği gibi otomatik olarak artırılır.

Karma kod sağlayıcısı örnekteki NameObjectCollectionBase anahtarlar için karma kodları dağıtır. Varsayılan karma kod sağlayıcısı şeklindedir CaseInsensitiveHashCodeProvider.

Karşılaştırıcı, iki anahtarın eşit olup olmadığını belirler. Varsayılan karşılaştırıcı değeridir CaseInsensitiveComparer.

.NET Framework sürüm 1.0'da bu sınıf kültüre duyarlı dize karşılaştırmaları kullanır. Ancak, .NET Framework sürüm 1.1 ve sonraki sürümlerde, bu sınıf dizeleri karşılaştırırken kullanırCultureInfo.InvariantCulture. Kültürün karşılaştırmaları ve sıralamayı nasıl etkilediği hakkında daha fazla bilgi için bkz. Culture-Insensitive Dize İşlemleri Gerçekleştirme.

null anahtar veya değer olarak izin verilir.

Dikkat

YöntemiBaseGet, belirtilen anahtar bulunamadığından döndürülen ile null anahtarla ilişkili değer olduğundan döndürülen arasında nullayrım null yapmaz.

Oluşturucular

NameObjectCollectionBase()

Boş olan sınıfın NameObjectCollectionBase yeni bir örneğini başlatır.

NameObjectCollectionBase(IEqualityComparer)

Boş, varsayılan başlangıç kapasitesine NameObjectCollectionBase sahip ve belirtilen IEqualityComparer nesneyi kullanan sınıfın yeni bir örneğini başlatır.

NameObjectCollectionBase(IHashCodeProvider, IComparer)
Geçersiz.
Geçersiz.

Boş sınıfın NameObjectCollectionBase yeni bir örneğini başlatır, varsayılan başlangıç kapasitesine sahiptir ve belirtilen karma kod sağlayıcısını ve belirtilen karşılaştırıcıyı kullanır.

NameObjectCollectionBase(Int32)

Sınıfın NameObjectCollectionBase boş, belirtilen başlangıç kapasitesine sahip yeni bir örneğini başlatır ve varsayılan karma kod sağlayıcısını ve varsayılan karşılaştırıcıyı kullanır.

NameObjectCollectionBase(Int32, IEqualityComparer)

Boş olan, belirtilen ilk kapasiteye NameObjectCollectionBase sahip ve belirtilen IEqualityComparer nesneyi kullanan sınıfın yeni bir örneğini başlatır.

NameObjectCollectionBase(Int32, IHashCodeProvider, IComparer)
Geçersiz.
Geçersiz.

Boş, belirtilen ilk kapasiteye NameObjectCollectionBase sahip olan ve belirtilen karma kod sağlayıcısını ve belirtilen karşılaştırıcıyı kullanan sınıfın yeni bir örneğini başlatır.

NameObjectCollectionBase(SerializationInfo, StreamingContext)
Geçersiz.

sınıfının serileştirilebilir ve belirtilen SerializationInfo ve StreamingContextkullanan yeni bir örneğini NameObjectCollectionBase başlatır.

Özellikler

Count

Örnekte bulunan anahtar/değer çiftlerinin NameObjectCollectionBase sayısını alır.

IsReadOnly

Örneğin salt okunur olup olmadığını NameObjectCollectionBase belirten bir değer alır veya ayarlar.

Keys

Örnekteki tüm anahtarları NameObjectCollectionBase içeren bir NameObjectCollectionBase.KeysCollection örneği alır.

Yöntemler

BaseAdd(String, Object)

Örneğe belirtilen anahtar ve değere NameObjectCollectionBase sahip bir girdi ekler.

BaseClear()

Örnekteki NameObjectCollectionBase tüm girişleri kaldırır.

BaseGet(Int32)

Örneğin belirtilen dizinindeki girdinin NameObjectCollectionBase değerini alır.

BaseGet(String)

Örnekten belirtilen anahtara sahip ilk girdinin NameObjectCollectionBase değerini alır.

BaseGetAllKeys()

Örnekteki tüm anahtarları NameObjectCollectionBase içeren bir String dizi döndürür.

BaseGetAllValues()

Örnekteki tüm değerleri NameObjectCollectionBase içeren bir Object dizi döndürür.

BaseGetAllValues(Type)

Örnekteki tüm değerleri NameObjectCollectionBase içeren belirtilen türde bir dizi döndürür.

BaseGetKey(Int32)

Örneğin belirtilen dizinindeki girdinin NameObjectCollectionBase anahtarını alır.

BaseHasKeys()

Örneğin anahtarları olmayan nullgirdiler içerip içermediğini NameObjectCollectionBase belirten bir değer alır.

BaseRemove(String)

Belirtilen anahtara sahip girişleri örnekten NameObjectCollectionBase kaldırır.

BaseRemoveAt(Int32)

Örneğin belirtilen dizinindeki girdiyi NameObjectCollectionBase kaldırır.

BaseSet(Int32, Object)

Girdinin değerini örneğin belirtilen dizininde NameObjectCollectionBase ayarlar.

BaseSet(String, Object)

Bulunursa örnekte belirtilen anahtara sahip ilk girdinin NameObjectCollectionBase değerini ayarlar; aksi takdirde, örneğe belirtilen anahtar ve değere NameObjectCollectionBase sahip bir girdi ekler.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetEnumerator()

aracılığıyla NameObjectCollectionBaseyineleyen bir numaralandırıcı döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetObjectData(SerializationInfo, StreamingContext)
Geçersiz.

Arabirimi uygular ISerializable ve örneği seri hale NameObjectCollectionBase getirmek için gereken verileri döndürür.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OnDeserialization(Object)

Arabirimi uygular ISerializable ve seri durumdan çıkarma işlemi tamamlandığında seri durumdan çıkarma olayını başlatır.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

ICollection.CopyTo(Array, Int32)

Hedef dizinin belirtilen dizininden başlayarak tamamını NameObjectCollectionBase uyumlu bir tek boyutlu Arrayöğesine kopyalar.

ICollection.IsSynchronized

Nesneye erişimin NameObjectCollectionBase eşitlenip eşitlenmediğini belirten bir değer alır (iş parçacığı güvenli).

ICollection.SyncRoot

Nesneye erişimi NameObjectCollectionBase eşitlemek için kullanılabilecek bir nesne alır.

Uzantı Metotları

Cast<TResult>(IEnumerable)

öğesinin IEnumerable öğelerini belirtilen türe atar.

OfType<TResult>(IEnumerable)

Bir öğesinin IEnumerable öğelerini belirtilen türe göre filtreler.

AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini sağlar.

AsQueryable(IEnumerable)

bir IEnumerable öğesini öğesine IQueryabledönüştürür.

Şunlara uygulanır

Ürün Sürümler
.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

İş Parçacığı Güvenliği

Bu türün genel statik (Shared Visual Basic'te) üyeleri iş parçacığı güvenlidir. Örnek üyelerin iş parçacığı güvenli olmaları garanti edilmez.

Bu uygulama, için NameObjectCollectionBaseeşitlenmiş (iş parçacığı güvenli) sarmalayıcı sağlamaz, ancak türetilmiş sınıflar özelliğini kullanarak SyncRoot kendi eşitlenmiş sürümlerini NameObjectCollectionBase oluşturabilir.

Bir koleksiyonda numaralandırmak, doğası gereği iş parçacığı güvenli bir yordam değildir. Bir koleksiyon eşitlendiği zaman bile, diğer iş parçacıkları numaralandırıcının özel durum oluşturmasına neden olan koleksiyonu değiştirebilir. Numaralandırma sırasında iş parçacığı güvenliği sağlamak için tüm numaralandırma sırasında koleksiyonu kilitleyebilir veya diğer iş parçacıkları tarafından yapılan değişikliklerden kaynaklanan özel durumları yakalayabilirsiniz.

Ayrıca bkz.