Bir d
verildiğinde, bir liste veya dizi gibi sabit bir diziyle, bazı dış veri kaynağını veya bazı mevcut koleksiyonlarda AST'yi numaralandıracak bir AST ile ilgileniyor olabilirsiniz. Numaralandırılabilir şekilde güvenli bir şekilde "materyalize etmek" için bir yol var mıdır, böylece foreach, count, vb. Gibi numaralandırma işlemleri her seferinde AST'yi uygulamaz mı?Bir IEnumerable ezberlemek veya Materialize için bir yolu var mı?
Bu temsili oluşturmak için sık sık .ToArray()
kullanıyorum ancak temel depolama alanı zaten bir liste veya başka bir sabit dizilimse, boşa harcanan kopya gibi görünüyor. i .Any()
ve foreach
iki kez ve unccessarily enumerable kopyalamadan diziyi numaralandırmak deneyin endişe duymadan
var enumerable = someEnumerable.Materialize();
if(enumberable.Any() {
foreach(var item in enumerable) {
...
}
} else {
...
}
yapıp yapamayacağımı iyi olurdu.
Bu güzel bir fikir, ancak mevcut koleksiyona karşı mutasyonlara karşı korumak için mevcutCollection.ToList öğesinin yapıldığını belirtmek isterim. – Ani
.ToList() ile ilgili sorun, listelenmemiş (diziler, ICollections, vb.) Bir numaralar listesi oluşturacak ve değiştirilebilen bir koleksiyon döndürecektir. –