IList<>
'un boş olup olmadığını kontrol etmeye çalışıyorum.Boole durumu için birleştirme nasıl yapılır?
var Foo = Bar.GimmeIListT(); // Returns an IList<SomeObject>
if (Foo?.Any())
// Do cool stuff with items in Foo
Fakat koşulu ile bir hata var: 'bool'
örtülü dönüştürülemez 'bool' için. Açık dönüştürme (? Eğer bir döküm eksik)
Yani koşul null bool olarak değerlendirilirse görünüyor var, bu yüzden
if (Foo?.Any().Value())
denemek Ama bu hiç iyi biri geçerlidir:
'bool' falan filan
Yani f 'değeri' için bir tanım ve hiçbir uzantı .... içermiyor irst örneği nullable bir bool olduğu konusunda şikayet eder ancak ikincisinde bunun olmadığını iddia eder.
if (Foo?.Any() == true)
Bu işleri - ama bu ilk mesaj bu istemediğini söyledi örtük dönüştürme kullandığı olmamalıdır çünkü: Başka bir caddede olarak
denerim!Neler oluyor? Bunu yapmanın doğru yolu nedir?
if (? Foo .Count> 0) {} –
@ AndzejMaciusovic: Bu kötü bir yol. Foo' aslında tamamen yürütmek için saatler süren bir soruysa, 'Any' badly' ı kaçıracaksınız. En az bir tane olup olmadığını bilmek istiyorsanız, hepsini hesaba katmayın. –
@TimSchmelter Örneğimde kullanıyorum .Count değil sayıyorum() .Count zaten IList üzerinde hesaplanan alan, aslında kullanmak için biraz daha hızlıdır.. Yerine Yerine(). Listede. –