2010-02-12 18 views
8

Öğeleri üzerinde yineleme ve değişiklik yapmaları gereken bir sözlüğe sahibim. Foreach deyimini kullanamıyorum çünkü bazen koleksiyonun bir numaralandırma sırasında değiştirilemeyeceğini söyleyen InvalidOperationException.Dictionary.ElementAt yöntemi bazı sınıflarda görünür, ancak diğerleri değil

Bir for döngüsü, Dictionary.ElementAt yöntemiyle birlikte kullanabilir ve diğer sınıflarda başarıyla kullandım, ancak bu belirli sınıfta, ElementAt yöntemi bulunamıyor! Herhangi bir fikir?

+1

ElementAt ile ilgili fikir yok, ancak yalnızca Anahtarları kopyalayıp bunu yineleyemediniz mi? –

+0

Dictionary.ElementAt'ın bulunmadığı yerde bize minimal bir örnek gösterebilir misiniz? –

cevap

18

ElementAt, System.Linq.Enumerable'da tanımlanan bir extension method sürümüdür. Sözlük uygulaması yaptığı gibi olsa da,

using System.Linq; 

Not ElementAt bir sözlük < TKey üzerine, TValue > anlamda çok yapmaz:

Sen görünür hale getirmek için bir kullanarak madde eklemek gerekir Belirli bir düzende olması gereken unsurları garanti etmez ve sözlükte değişiklik yaparsanız sipariş değişmez.

+0

Ve derlemenizin .NET 3.5 (veya üstü) hedeflendiğinden emin olun. –

+0

Bir sözlüğe erişmek için dizine güvenmenin tehlikeli olduğunu göstermek için bir örnek verebilir misiniz? (yani, belirli bir tuş için indeksin değiştiği yer). –

+0

Görünüşe Göre Sözlük siparişi garanti etmez. Sözlük üzerinden farklı iterasyonlarda öğeleri farklı sıralarda alabilirsiniz. –

İlgili konular