नहीं, तरीकों की वर्तमान .नेट फ्रेमवर्क लागू करने के लिए कोई फर्क नहीं व्यावहारिक अंतर है। स्थगित निष्पादन की वजह से, दोनों photos
की गणना करेंगे जब तक कि यह कोई मिलान न मिले, और फिर रुक जाए। (बशर्ते कि यह लिंक-टू-ऑब्जेक्ट्स है - अन्य प्रदाता अलग-अलग व्यवहार कर सकते हैं)।
यदि आप नाइट-पिक्य प्राप्त करना चाहते हैं, तो छोटे कार्यान्वयन भिन्नताएं हैं। (आप इसे ढांचे स्रोतों में देख सकते हैं):
Any
बस उस समूह का iterates foreach का उपयोग कर, जहां Where
रिटर्न या तो एक WhereArrayIterator
, WhereListIterator
, या एक WhereEnumerableIterator
संग्रह आप किस प्रकार में पास के आधार पर के रूप में मैं हेवन '। टी गहराई में इस पर ध्यान दिया, लेकिन मुझे लगता है कि यह एक सरणी या सूची के मामले में अनुकूलित करने के लिए जंजीर विस्तार विधियों को अनुमति देने के लिए किया जाता है।
दूसरे शब्दों में, जहां Any
एक सरल foreach
होता है, Where
करता है:
if (source is TSource[]) return new WhereArrayIterator<TSource>((TSource[])source, predicate);
if (source is List<TSource>) return new WhereListIterator<TSource>((List<TSource>)source, predicate);
return new WhereEnumerableIterator<TSource>(source, predicate);
इसका परिणाम वही होना चाहिए, लेकिन चूंकि कोई प्रदर्शन अंतर नहीं होने के बारे में 100% निश्चित नहीं है, इसलिए मैं इसे जाने दूंगा और किसी को इस पोस्ट पर एक निश्चित उत्तर देने दूंगा। –
विजुअल स्टूडियो में आप स्वयं आईएल की जांच कर सकते हैं। कृपया funktion –