Hashtable Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.