All
ILSpy के अनुसार कार्यान्वयन (जैसा कि मैंने वास्तव में देखा और देखा, "अच्छी तरह से होने के बजाय, यह तरीका थोड़ा काम करता है ..." मैं कर सकता हूं अगर हम प्रभाव के बजाय सिद्धांत पर चर्चा कर रहे थे)।
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 के अनुसार कार्यान्वयन :
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;
}
बेशक, उत्पादित आईएल में कुछ सूक्ष्म अंतर हो सकता है। लेकिन नहीं, नहीं वहाँ नहीं है। IL बहुत अधिक समान है, लेकिन विधेय मिलान पर सच लौटने के स्पष्ट उलट के लिए बनाम विधेय बेमेल पर झूठे लौटने के लिए।
यह केवल पाठ्यक्रम के लिए linq-for-Objects है। यह संभव है कि कुछ अन्य linq प्रदाता एक दूसरे की तुलना में बहुत बेहतर व्यवहार करते हैं, लेकिन फिर अगर ऐसा होता, तो यह बहुत अधिक यादृच्छिक होता है, जिसे अधिक इष्टतम कार्यान्वयन मिला।
ऐसा लगता है कि यह नियम पूरी तरह से किसी को लग रहा है कि if(determineSomethingTrue)
यह सरल और अधिक पठनीय है if(!determineSomethingFalse)
। और निष्पक्षता में, मुझे लगता है कि उनके पास एक बिंदु है जिसमें मैं अक्सर if(!someTest)
भ्रमित हो जाता हूं * जब समान क्रियाशीलता और जटिलता का एक वैकल्पिक परीक्षण होता है जो उस स्थिति के लिए सही होता है जिस पर हम कार्य करना चाहते हैं। फिर भी वास्तव में, मैं व्यक्तिगत रूप से आपके द्वारा दिए गए दो विकल्पों में से एक के पक्ष में एक का पक्ष लेने के लिए कुछ भी नहीं पाता हूं, और शायद यह पूर्व की ओर बहुत थोड़ा झुक जाएगा यदि विधेय अधिक जटिल था।
* जैसा कि मुझे समझ में नहीं आ रहा है, वैसे ही भ्रमित करना, लेकिन जैसा कि मुझे चिंता है कि निर्णय के कुछ सूक्ष्म कारण हैं जो मुझे समझ में नहीं आते हैं, और यह महसूस करने के लिए कुछ मानसिक झोंके लगते हैं कि "नहीं, उन्होंने बस करने का फैसला किया इस तरह, प्रतीक्षा करें कि मैं इस कोड को फिर से क्या देख रहा था? ... "