Hashtable Sınıf

Tanım

Anahtarın karma koduna göre düzenlenmiş bir anahtar/değer çiftleri koleksiyonunu temsil eder.

public ref class Hashtable : System::Collections::IDictionary
public ref class Hashtable : ICloneable, System::Collections::IDictionary, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public class Hashtable : System.Collections.IDictionary
public class Hashtable : ICloneable, System.Collections.IDictionary, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public class Hashtable : ICloneable, System.Collections.IDictionary, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Hashtable : ICloneable, System.Collections.IDictionary, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type Hashtable = class
    interface ICollection
    interface IEnumerable
    interface IDictionary
type Hashtable = class
    interface ICollection
    interface IEnumerable
    interface IDictionary
    interface ICloneable
    interface IDeserializationCallback
    interface ISerializable
type Hashtable = class
    interface ICollection
    interface IEnumerable
    interface IDictionary
    interface ISerializable
    interface IDeserializationCallback
    interface ICloneable
[<System.Serializable>]
type Hashtable = class
    interface IDictionary
    interface ICollection
    interface IEnumerable
    interface ISerializable
    interface IDeserializationCallback
    interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Hashtable = class
    interface IDictionary
    interface ICollection
    interface IEnumerable
    interface ISerializable
    interface IDeserializationCallback
    interface ICloneable
Public Class Hashtable
Implements IDictionary
Public Class Hashtable
Implements ICloneable, IDeserializationCallback, IDictionary, ISerializable
Devralma
Hashtable
Türetilmiş
Öznitelikler
Uygulamalar

Örnekler

Aşağıdaki örnek, için çeşitli işlevlerin Hashtable nasıl oluşturulacağını, başlatılacağını ve gerçekleştirilip anahtarlarının ve değerlerinin nasıl yazdırılacağını gösterir.

using System;
using System.Collections;

class Example
{
    public static void Main()
    {
        // Create a new hash table.
        //
        Hashtable openWith = new Hashtable();

        // Add some elements to the hash table. There are no
        // duplicate keys, but some of the values are duplicates.
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("dib", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // The Add method throws an exception if the new key is
        // already in the hash table.
        try
        {
            openWith.Add("txt", "winword.exe");
        }
        catch
        {
            Console.WriteLine("An element with Key = \"txt\" already exists.");
        }

        // The Item property is the default property, so you
        // can omit its name when accessing elements.
        Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);

        // The default Item property can be used to change the value
        // associated with a key.
        openWith["rtf"] = "winword.exe";
        Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);

        // If a key does not exist, setting the default Item property
        // for that key adds a new key/value pair.
        openWith["doc"] = "winword.exe";

        // ContainsKey can be used to test keys before inserting
        // them.
        if (!openWith.ContainsKey("ht"))
        {
            openWith.Add("ht", "hypertrm.exe");
            Console.WriteLine("Value added for key = \"ht\": {0}", openWith["ht"]);
        }

        // When you use foreach to enumerate hash table elements,
        // the elements are retrieved as KeyValuePair objects.
        Console.WriteLine();
        foreach( DictionaryEntry de in openWith )
        {
            Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
        }

        // To get the values alone, use the Values property.
        ICollection valueColl = openWith.Values;

        // The elements of the ValueCollection are strongly typed
        // with the type that was specified for hash table values.
        Console.WriteLine();
        foreach( string s in valueColl )
        {
            Console.WriteLine("Value = {0}", s);
        }

        // To get the keys alone, use the Keys property.
        ICollection keyColl = openWith.Keys;

        // The elements of the KeyCollection are strongly typed
        // with the type that was specified for hash table keys.
        Console.WriteLine();
        foreach( string s in keyColl )
        {
            Console.WriteLine("Key = {0}", s);
        }

        // Use the Remove method to remove a key/value pair.
        Console.WriteLine("\nRemove(\"doc\")");
        openWith.Remove("doc");

        if (!openWith.ContainsKey("doc"))
        {
            Console.WriteLine("Key \"doc\" is not found.");
        }
    }
}

/* This code example produces the following output:

An element with Key = "txt" already exists.
For key = "rtf", value = wordpad.exe.
For key = "rtf", value = winword.exe.
Value added for key = "ht": hypertrm.exe

Key = dib, Value = paint.exe
Key = txt, Value = notepad.exe
Key = ht, Value = hypertrm.exe
Key = bmp, Value = paint.exe
Key = rtf, Value = winword.exe
Key = doc, Value = winword.exe

Value = paint.exe
Value = notepad.exe
Value = hypertrm.exe
Value = paint.exe
Value = winword.exe
Value = winword.exe

Key = dib
Key = txt
Key = ht
Key = bmp
Key = rtf
Key = doc

Remove("doc")
Key "doc" is not found.
 */
Imports System.Collections

Module Example

    Sub Main()

        ' Create a new hash table.
        '
        Dim openWith As New Hashtable()

        ' Add some elements to the hash table. There are no 
        ' duplicate keys, but some of the values are duplicates.
        openWith.Add("txt", "notepad.exe")
        openWith.Add("bmp", "paint.exe")
        openWith.Add("dib", "paint.exe")
        openWith.Add("rtf", "wordpad.exe")

        ' The Add method throws an exception if the new key is 
        ' already in the hash table.
        Try
            openWith.Add("txt", "winword.exe")
        Catch
            Console.WriteLine("An element with Key = ""txt"" already exists.")
        End Try

        ' The Item property is the default property, so you 
        ' can omit its name when accessing elements. 
        Console.WriteLine("For key = ""rtf"", value = {0}.", _
            openWith("rtf"))

        ' The default Item property can be used to change the value
        ' associated with a key.
        openWith("rtf") = "winword.exe"
        Console.WriteLine("For key = ""rtf"", value = {0}.", _
            openWith("rtf"))

        ' If a key does not exist, setting the default Item property
        ' for that key adds a new key/value pair.
        openWith("doc") = "winword.exe"

        ' ContainsKey can be used to test keys before inserting 
        ' them.
        If Not openWith.ContainsKey("ht") Then
            openWith.Add("ht", "hypertrm.exe")
            Console.WriteLine("Value added for key = ""ht"": {0}", _
                openWith("ht"))
        End If

        ' When you use foreach to enumerate hash table elements,
        ' the elements are retrieved as KeyValuePair objects.
        Console.WriteLine()
        For Each de As DictionaryEntry In openWith
            Console.WriteLine("Key = {0}, Value = {1}", _
                de.Key, de.Value)
        Next de

        ' To get the values alone, use the Values property.
        Dim valueColl As ICollection = openWith.Values

        ' The elements of the ValueCollection are strongly typed
        ' with the type that was specified for hash table values.
        Console.WriteLine()
        For Each s As String In valueColl
            Console.WriteLine("Value = {0}", s)
        Next s

        ' To get the keys alone, use the Keys property.
        Dim keyColl As ICollection = openWith.Keys

        ' The elements of the KeyCollection are strongly typed
        ' with the type that was specified for hash table keys.
        Console.WriteLine()
        For Each s As String In keyColl
            Console.WriteLine("Key = {0}", s)
        Next s

        ' Use the Remove method to remove a key/value pair.
        Console.WriteLine(vbLf + "Remove(""doc"")")
        openWith.Remove("doc")

        If Not openWith.ContainsKey("doc") Then
            Console.WriteLine("Key ""doc"" is not found.")
        End If

    End Sub

End Module

' This code example produces the following output:
'
'An element with Key = "txt" already exists.
'For key = "rtf", value = wordpad.exe.
'For key = "rtf", value = winword.exe.
'Value added for key = "ht": hypertrm.exe
'
'Key = dib, Value = paint.exe
'Key = txt, Value = notepad.exe
'Key = ht, Value = hypertrm.exe
'Key = bmp, Value = paint.exe
'Key = rtf, Value = winword.exe
'Key = doc, Value = winword.exe
'
'Value = paint.exe
'Value = notepad.exe
'Value = hypertrm.exe
'Value = paint.exe
'Value = winword.exe
'Value = winword.exe
'
'Key = dib
'Key = txt
'Key = ht
'Key = bmp
'Key = rtf
'Key = doc
'
'Remove("doc")
'Key "doc" is not found.
# Create new hash table using PowerShell syntax.
$OpenWith = @{}

# Add one element to the hash table using the Add method.
$OpenWith.Add('txt', 'notepad.exe')

# Add three elements using PowerShell syntax three different ways.
$OpenWith.dib = 'paint.exe'

$KeyBMP = 'bmp'
$OpenWith[$KeyBMP] = 'paint.exe'

$OpenWith += @{'rtf' = 'wordpad.exe'}

# Display hash table.
"There are {0} in the `$OpenWith hash table as follows:" -f $OpenWith.Count
''

# Display hashtable properties.
'Count of items in the hashtable  : {0}' -f $OpenWith.Count
'Is hashtable fixed size?         : {0}' -f $OpenWith.IsFixedSize
'Is hashtable read-only?          : {0}' -f $OpenWith.IsReadonly
'Is hashtable synchronised?      : {0}' -f $OpenWith.IsSynchronized
''
'Keys in hashtable:'
$OpenWith.Keys
''
'Values in hashtable:'
$OpenWith.Values
''

<#
This script produces the following output:

There are 4 in the $OpenWith hash table as follows:

Name                           Value
----                           -----
txt                            notepad.exe
dib                            paint.exe
bmp                            paint.exe
rtf                            wordpad.exe

Count of items in the hashtable  : 4
Is hashtable fixed size?         : False
Is hashtable read-only?          : False
Is hashtable synchronised?      : False

Keys in hashtable:
txt
dib
bmp
rtf

Values in hashtable:
notepad.exe
paint.exe
paint.exe
wordpad.exe
#>

Açıklamalar

Her öğe bir nesnede depolanan bir DictionaryEntry anahtar/değer çiftidir. Anahtar olamaz null, ancak bir değer olabilir.

Important

Sınıfını yeni geliştirme için kullanmanızı Hashtable önermiyoruz. Bunun yerine genel Dictionary<TKey,TValue> sınıfı kullanmanızı öneririz. Daha fazla bilgi için bkz. GitHub'da genel olmayan koleksiyonlar kullanılmamalıdır .

tarafından Hashtable anahtar olarak kullanılan nesneler, yöntemini (veya arabirimini) ve Object.GetHashCode yöntemini (veya IHashCodeProviderObject.Equals arabirimini) geçersiz kılmak IComparer için gereklidir. Hem yöntemlerin hem de arabirimlerin uygulanması büyük/küçük harf duyarlılığını aynı şekilde ele almalıdır; aksi takdirde, Hashtable yanlış davranabilir. Örneğin, oluştururken Hashtablesınıfını CaseInsensitiveHashCodeProvider (veya büyük/küçük harfe duyarlı IHashCodeProvider olmayan herhangi bir uygulamayı) sınıfıyla CaseInsensitiveComparer (veya herhangi bir büyük/küçük harfe duyarsız IComparer uygulamayla) kullanmanız gerekir.

Ayrıca, anahtar içinde mevcutken bu yöntemlerin aynı parametrelerle çağrıldığında aynı sonuçları üretmesi Hashtablegerekir. Alternatif olarak, parametreli Hashtable bir IEqualityComparer oluşturucu kullanabilirsiniz. Anahtar eşitliği yalnızca başvuru eşitliği olsaydı, devralınan ve Object.GetHashCode uygulaması Object.Equals yeterli olurdu.

anahtar nesneleri, içinde Hashtableanahtar olarak kullanıldıkları sürece sabit olmalıdır.

öğesine bir öğe eklendiğinde Hashtable, öğe anahtarın karma koduna göre bir demet içine yerleştirilir. Anahtarın sonraki aramaları, anahtarın karma kodunu kullanarak yalnızca belirli bir demette arama yaparak bir öğeyi bulmak için gereken anahtar karşılaştırmalarının sayısını önemli ölçüde azaltır.

öğesinin Hashtable yük faktörü, öğelerin demetlere en yüksek oranını belirler. Daha küçük yük faktörleri, daha yüksek bellek tüketimi maliyetinde ortalama arama sürelerinin daha hızlı gerçekleşmesine neden olur. Varsayılan 1.0 yük faktörü genellikle hız ve boyut arasında en iyi dengeyi sağlar. Oluşturulduğunda farklı bir yük faktörü de belirtilebilir Hashtable .

öğesine öğe eklendikçe Hashtable, artışların Hashtable gerçek yük faktörü de artar. Gerçek yük faktörü belirtilen yük faktörüne ulaştığında, içindeki Hashtable demetlerin sayısı otomatik olarak geçerli demet sayısının iki katından daha büyük olan en küçük asal sayıya Hashtable yükseltilir.

içindeki Hashtable her anahtar nesnesi, çağrılarak GetHasherişilebilen kendi karma işlevini sağlamalıdır. Ancak, uygulayan IHashCodeProvider herhangi bir nesne bir Hashtable oluşturucuya geçirilebilir ve bu karma işlevi tablodaki tüm nesneler için kullanılır.

'nin Hashtable kapasitesi, barındırabileceği öğelerin Hashtable sayısıdır. öğesine öğeler eklendikçe Hashtablekapasite, yeniden ayırma aracılığıyla gerektiği gibi otomatik olarak artırılır.

Yalnızca .NET Framework: Çok büyük Hashtable nesneler için, yapılandırma öğesinin özniteliğini çalışma zamanı ortamında olarak ayarlayarak enabled 64 bitlik bir sistemde maksimum kapasiteyi <gcAllowVeryLargeObjects> 2 milyar öğeye true yükseltebilirsiniz.

foreach C# dilinin deyimi (For EachVisual Basic'te) koleksiyondaki öğelerin türünde bir nesne döndürür. öğesinin Hashtable her öğesi bir anahtar/değer çifti olduğundan, öğe türü anahtarın türü veya değerin türü değildir. Bunun yerine, öğe türü şeklindedir DictionaryEntry. Örneğin:

foreach(DictionaryEntry de in myHashtable)
{
    // ...
}
For Each de As DictionaryEntry In myHashtable
    ' ...
Next de

deyimi foreach , numaralandırıcının etrafındaki bir sarmalayıcıdır ve yalnızca koleksiyonun okunmasına izin verir, yazmaya değil.

için bir numaralandırıcıyı seri hale getirmek ve seri durumdan çıkarma öğelerin yeniden sıralanmalarına neden olabileceğinden Hashtable , yöntemini çağırmadan numaralandırmaya Reset devam etmek mümkün değildir.

Note

Anahtarlar devralınabildiği ve davranışları değiştirilebildiği için mutlak benzersizlikleri yöntemi kullanılarak Equals yapılan karşılaştırmalarla garanti edilemez.

Oluşturucular

Name Description
Hashtable()

Varsayılan başlangıç kapasitesini, yük faktörünü, karma kod sağlayıcısını Hashtable ve karşılaştırıcıyı kullanarak sınıfın yeni, boş bir örneğini başlatır.

Hashtable(IDictionary, IEqualityComparer)

Belirtilen sözlükten yeni bir nesneye Hashtable öğeleri kopyalayarak sınıfının yeni Hashtable bir örneğini başlatır. Yeni Hashtable nesne, kopyalanan öğe sayısına eşit bir başlangıç kapasitesine sahiptir ve varsayılan yük faktörünü ve belirtilen IEqualityComparer nesneyi kullanır.

Hashtable(IDictionary, IHashCodeProvider, IComparer)
Geçersiz.
Geçersiz.

Belirtilen sözlükten yeni nesneye Hashtable öğeleri kopyalayarak sınıfının yeni Hashtable bir örneğini başlatır. Yeni Hashtable nesne, kopyalanan öğe sayısına eşit bir başlangıç kapasitesine sahiptir ve varsayılan yük faktörünü ve belirtilen karma kod sağlayıcısını ve karşılaştırıcıyı kullanır. Bu API kullanımdan kaldırıldı. Alternatif olarak bkz Hashtable(IDictionary, IEqualityComparer). .

Hashtable(IDictionary, Single, IEqualityComparer)

Belirtilen sözlükten yeni nesneye Hashtable öğeleri kopyalayarak sınıfının yeni Hashtable bir örneğini başlatır. Yeni Hashtable nesne, kopyalanan öğe sayısına eşit bir başlangıç kapasitesine sahiptir ve belirtilen yük faktörünü ve IEqualityComparer nesnesini kullanır.

Hashtable(IDictionary, Single, IHashCodeProvider, IComparer)
Geçersiz.
Geçersiz.

Belirtilen sözlükten yeni nesneye Hashtable öğeleri kopyalayarak sınıfının yeni Hashtable bir örneğini başlatır. Yeni Hashtable nesne, kopyalanan öğe sayısına eşit bir başlangıç kapasitesine sahiptir ve belirtilen yük faktörünü, karma kod sağlayıcısını ve karşılaştırıcıyı kullanır.

Hashtable(IDictionary, Single)

Belirtilen sözlükten yeni nesneye Hashtable öğeleri kopyalayarak sınıfının yeni Hashtable bir örneğini başlatır. Yeni Hashtable nesne, kopyalanan öğe sayısına eşit bir başlangıç kapasitesine sahiptir ve belirtilen yük faktörünü ve varsayılan karma kod sağlayıcısını ve karşılaştırıcıyı kullanır.

Hashtable(IDictionary)

Belirtilen sözlükten yeni nesneye Hashtable öğeleri kopyalayarak sınıfının yeni Hashtable bir örneğini başlatır. Yeni Hashtable nesne, kopyalanan öğe sayısına eşit bir başlangıç kapasitesine sahiptir ve varsayılan yük faktörünü, karma kod sağlayıcısını ve karşılaştırıcıyı kullanır.

Hashtable(IEqualityComparer)

Varsayılan ilk kapasiteyi ve yük faktörünü Hashtable ve belirtilen IEqualityComparer nesneyi kullanarak sınıfın yeni, boş bir örneğini başlatır.

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

Varsayılan ilk kapasiteyi ve yük faktörünü Hashtable ve belirtilen karma kod sağlayıcısını ve karşılaştırıcıyı kullanarak sınıfın yeni, boş bir örneğini başlatır.

Hashtable(Int32, IEqualityComparer)

Belirtilen ilk kapasiteyi ve Hashtableve varsayılan yük faktörünü IEqualityComparer kullanarak sınıfın yeni, boş bir örneğini başlatır.

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

Belirtilen ilk kapasiteyi, karma kod sağlayıcısını, karşılaştırıcıyı Hashtable ve varsayılan yük faktörünü kullanarak sınıfın yeni, boş bir örneğini başlatır.

Hashtable(Int32, Single, IEqualityComparer)

Belirtilen ilk kapasiteyi, yük faktörünü ve nesnesini kullanarak sınıfın Hashtable yeni, IEqualityComparer boş bir örneğini başlatır.

Hashtable(Int32, Single, IHashCodeProvider, IComparer)
Geçersiz.
Geçersiz.

Belirtilen ilk kapasiteyi, yük faktörünü, karma kod sağlayıcısını Hashtable ve karşılaştırıcıyı kullanarak sınıfın yeni, boş bir örneğini başlatır.

Hashtable(Int32, Single)

Belirtilen ilk kapasiteyi ve yük faktörünü Hashtable ve varsayılan karma kod sağlayıcısını ve karşılaştırıcısını kullanarak sınıfın yeni, boş bir örneğini başlatır.

Hashtable(Int32)

Belirtilen ilk kapasiteyi ve varsayılan yük faktörünü, karma kod sağlayıcısını ve karşılaştırıcıyı kullanarak sınıfın yeni, boş bir örneğini Hashtable başlatır.

Hashtable(SerializationInfo, StreamingContext)
Geçersiz.

Belirtilen Hashtable ve nesneleri kullanılarak serileştirilebilir sınıfının yeni, SerializationInfo boş bir örneğini StreamingContext başlatır.

Özellikler

Name Description
comparer
Geçersiz.
Geçersiz.

için IComparerkullanılacak öğesini Hashtable alır veya ayarlar.

Count

içinde yer alan Hashtableanahtar/değer çiftlerinin sayısını alır.

EqualityComparer

IEqualityComparer için kullanılacak öğesini Hashtablealır.

hcp
Geçersiz.
Geçersiz.

Karma kodları dağıtabilen nesneyi alır veya ayarlar.

IsFixedSize

değerinin sabit bir boyuta sahip olup olmadığını Hashtable belirten bir değer alır.

IsReadOnly

öğesinin salt okunur olup olmadığını Hashtable belirten bir değer alır.

IsSynchronized

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

Item[Object]

Belirtilen anahtarla ilişkili değeri alır veya ayarlar.

Keys

içindeki anahtarları ICollectioniçeren bir Hashtable alır.

SyncRoot

Hashtableerişimini eşitlemek için kullanılabilecek bir nesnesi alır.

Values

içindeki ICollectiondeğerleri içeren bir Hashtable alır.

Yöntemler

Name Description
Add(Object, Object)

öğesine belirtilen anahtara ve değere Hashtablesahip bir öğe ekler.

Clear()

öğesinden Hashtabletüm öğeleri kaldırır.

Clone()

öğesinin sığ bir kopyasını Hashtableoluşturur.

Contains(Object)

Hashtable belirli bir anahtar içerip içermediğini belirler.

ContainsKey(Object)

Hashtable belirli bir anahtar içerip içermediğini belirler.

ContainsValue(Object)

öğesinin Hashtable belirli bir değer içerip içermediğini belirler.

CopyTo(Array, Int32)

Öğeleri belirtilen dizindeki Hashtable tek boyutlu Array bir örneğe kopyalar.

Equals(Object)

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

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

aracılığıyla IDictionaryEnumeratoryineleyen bir Hashtable döndürür.

GetHash(Object)

Belirtilen anahtar için karma kodu döndürür.

GetHashCode()

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

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

arabirimini ISerializable uygular ve serileştirmek Hashtableiçin gereken verileri döndürür.

GetType()

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

(Devralındığı yer: Object)
KeyEquals(Object, Object)

Belirli Object bir anahtarı içindeki Hashtablebelirli bir anahtarla karşılaştırır.

MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

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

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

Remove(Object)

öğesinden Hashtablebelirtilen anahtara sahip öğesini kaldırır.

Synchronized(Hashtable)

için eşitlenmiş (iş parçacığı güvenli) sarmalayıcı döndürür Hashtable.

ToString()

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

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

Name Description
IEnumerable.GetEnumerator()

Bir koleksiyonda yineleyen bir numaralandırıcı döndürür.

Uzantı Metotları

Name Description
AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini etkinleştirir.

AsQueryable(IEnumerable)

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

Cast<TResult>(IEnumerable)

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

OfType<TResult>(IEnumerable)

Belirtilen türe göre bir IEnumerable öğesinin öğelerini filtreler.

Şunlara uygulanır

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

Hashtable iş parçacığı, birden çok okuyucu iş parçacığı ve tek bir yazma iş parçacığı tarafından kullanılmak üzere güvenlidir. İş parçacıklarından yalnızca biri yazma (güncelleştirme) işlemleri gerçekleştirdiğinde çok iş parçacığı kullanımı için iş parçacığı güvenlidir. Bu işlem, yazıcıların üzerinde seri hale getirilmiş Hashtableolması koşuluyla kilitsiz okumalara olanak tanır. Birden çok yazıcıyı desteklemek için, nesnesini okuyan Hashtable iş parçacığı olmaması koşuluyla üzerindeki tüm işlemlerin Synchronized(Hashtable)Hashtable yöntemi tarafından döndürülen sarmalayıcı aracılığıyla yapılması gerekir.

Bir koleksiyonda numaralandırma, iş parçacığı güvenli bir yordam değildir. Bir koleksiyon eşitlendiğinde bile, diğer iş parçacıkları yine de koleksiyonu değiştirebilir ve bu da numaralandırıcının bir özel durum oluşturmasına neden olur. Numaralandırma sırasında iş parçacığı güvenliğini garanti etmek 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.