İşleme IEnumerable Olası birden çok numaralandırma için Uyarı
IEnumerable<>
bir kullanım için gereken Şifremi birkaç kez böylece Resharper hata alıyorum "IEnumerable
Olası birden çok numaralandırma".
Örnek kod:
public List<object> Foo(IEnumerable<object> objects)
{
if (objects == null || !objects.Any())
throw new ArgumentException();
var firstObject = objects.First();
var list = DoSomeThing(firstObject);
var secondList = DoSomeThingElse(objects);
list.AddRange(secondList);
return list;
}
objects
parametreList
ve daha sonra mümkün olan birden çok numaralandırma önlemek için değiştirebilirim ama sonra üstesinden gelebileceğim en yüksek nesne anlamıyorum.- Yapabileceğim başka bir şey yönteminin başında
List
IEnumerable
dönüştürmek için:
public List<object> Foo(IEnumerable<object> objects)
{
var objectList = objects.ToList();
// ...
}
Ama bu öyle değilgarip.
Bu senaryoda ne yapardınız?
CEVAP
Parametre olarak IEnumerable
alma sorunu arayanların olduğunu "bu numaralandır keşke". Sıralamak istediğiniz nasıl onlara değil.
Nesneleri Listelemek ve daha sonra mümkün olan birden çok numaralandırma önlemek için parametre değiştirebilirim ama o zaman anlamıyorumüstesinden gelebileceğim en yüksek nesne.
En yüksek nesne alma amacı asil, ama çok fazla varsayımlar için oda bırakır. Gerçekten biri seni iki kere numaralandırma yöntemi, sadece bu (potansiyel olarak farklı sonuçlar her zaman alıyorum?) için SQL sorgu için bir SERİ geçmek ister misiniz
Semantik burada eksik olan belki de zaman yöntemi ayrıntılarını okumak için almaz arayan, yalnız bir kez yineleme kabul edebilir ki - pahalı bir nesne geçerler. Yöntem imzanızı her iki şekilde göstermez.
Yöntem imzası*/*11 12*, *değiştirerek en azından beklentileriniz nedir bu çağrıyı daha net hale getirecek, ve pahalı hataları önlemek için.
Aksi halde, en geliştiriciler yöntemi bakarak sadece bir kez yineleme düşünecektir. Eğer IEnumerable
alarak bu kadar önemli ise, yöntem başlangıcında .ToList()
yapmayı düşünmelisiniz.
Çok yazık .NET Sayım Oluşturucu IEnumerable bir arayüz,/etc Kaldır olmadan yok. şüpheli olan yöntemler, bu sorunu çözmek istiyorsunuz.
Böyle büyük mükafat uyarı: "Birde...
birden çok olay aynı fonksiyonu tetikl...
Nasıl bir mektup matris Olası sözleri ...
nasıl android Uyarı İletişim kutusunu ...
Nasıl birden fazla çalıştırmak için .B...