All
ILSpy'a göre uygulanması ( aslında olduğu gibi "iyi, bu yöntem biraz işe yarıyor ..." yerine, teorinin etkisini değil de tartışmayı düşünürsek yapabilirim).
public static bool All<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
if (predicate == null)
{
throw Error.ArgumentNull("predicate");
}
foreach (TSource current in source)
{
if (!predicate(current))
{
return false;
}
}
return true;
}
Any
ILSpy'a göre uygulama :
public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
if (predicate == null)
{
throw Error.ArgumentNull("predicate");
}
foreach (TSource current in source)
{
if (predicate(current))
{
return true;
}
}
return false;
}
Tabii ki, üretilen IL'de bazı ince farklar olabilir. Ama hayır, hayır yok. IL hemen hemen aynıdır, ancak yüklem eşleşmesinde doğru dönüşün, ters uyumsuzlukta yanlış döndürülmesinin bariz tersine çevrilmesi için.
Bu sadece nesneler için linq'tir. Diğer bazı linq sağlayıcılarının birine diğerinden çok daha iyi davranması mümkündür, ancak bu durumda, hangisinin daha uygun bir uygulamaya sahip olduğu oldukça rasgele.
Kuralın sadece if(determineSomethingTrue)
daha basit ve daha okunabilir bir duyguya indiği anlaşılıyor if(!determineSomethingFalse)
. Ve adalet içinde, sanırım if(!someTest)
, hareket etmek istediğimiz koşul için doğru olacak alternatif bir eşit ayrıntı ve karmaşıklık testi olduğunda, genellikle kafa karıştırıcı * bulduğum bir nokta var. Yine de, şahsen verdiğiniz iki alternatifin diğerinden birini tercih edecek hiçbir şey bulamıyorum ve eğer yüklem daha karmaşık olsaydı belki de öncekine çok hafif eğilirdim.
* Anlamadığım gibi kafa karıştırıcı değil, ama anladığım gibi kafa karıştırıcı, anlayamadığım karar için ince bir neden olduğundan endişe duyuyorum ve bunu gerçekleştirmek için birkaç zihinsel atlama gerekiyor "hayır, sadece yapmaya karar verdiler bu şekilde bekle, bu kod parçasına tekrar ne bakıyordum? ... "