मैंने समय और समय फिर से एपीआई (विशेष रूप से .NET ढांचे में) देखा है जो Func<TObject, bool>
का उपयोग करता है जब Predicate<TObject>
प्रतीत होता है कि यह पूरी तरह उत्तरदायी विकल्प है। क्या अच्छा कारण एपीआई डिजाइनर ऐसा करने के लिए हो सकता है?Func <tobject, bool> या भविष्यवाणी <TObject>?
उत्तर
LINQ में, Func<T, bool>
Where
ताकि जैसी चीजों के लिए प्रयोग किया जाता है अन्य अधिभार जो तत्व के रूप में रूप में अच्छी तरह सूचकांक लेता संगत है:
IEnumerable<T> Where(IEnumerable<T> source, Func<T, bool> predicate)
IEnumerable<T> Where(IEnumerable<T> source, Func<T, int, bool> predicate)
निजी तौर पर मुझे लगता है कि नाम Predicate
और वर्णनात्मक है, इसलिए मैं जहां ऊपर की तरह कोई स्थिरता मुद्दा नहीं है स्थितियों में यह प्रयोग करेंगे। आपको याद है, केवल Action
और Func
प्रतिनिधि प्रकारों के बारे में जानने की आवश्यकता है ...
बाकी LINQ के साथ संगति?
("विसंगति" उल्लेख किया गया है, लेकिन अनाम प्रतिनिधियों और लैम्ब्डा कार्यों के साथ यह कोई फर्क नहीं तो अंतर के बारे में पता करने की आवश्यकता है लगभग कभी नहीं बनाता है।)
हां, लेकिन LINQ ने ऐसा क्यों किया? –
मुझे यह भी नहीं लगता कि बाकी LINQ के साथ "स्थिरता" अच्छा कारण है। –
एक संभावना के लिए जॉन का जवाब देखें। – Richard
समारोह <> प्रतिनिधियों "नए हैं "विधियों के लिए lambdas/प्रतिनिधियों को निर्दिष्ट करने का तरीका। हालांकि, वहां प्रतिनिधियों का एक आसान सेट है, और यदि कोई और विशिष्ट प्रतिनिधि है जो वही काम करता है तो उसके लिए जाएं।
अपने उदाहरण में मैं हमेशा विधेय <> यह बहुत ज्यादा आत्म दस्तावेज़ीकृत कर के रूप में के लिए जाना चाहते हैं (एक विधेय संभालने तुम क्या चाहते है)
- 1. TProc <TObject> TNotifyEvent को
- 2. अभिव्यक्ति <Func<T,bool>> अभिव्यक्ति से <Func<T>>
- 3. मैं गतिशील रूप से अभिव्यक्ति कैसे बना सकता हूं <Func <MyClass, bool >> अभिव्यक्ति से भविष्यवाणी <Func <MyClass, string >>?
- 4. Func <TEntity, bool>
- 5. कार्य.रुन और Func <>
- 6. गैर स्थैतिक अभिव्यक्ति <Func<X>> 'इस'
- 7. सी # कार्रवाई <> Func <> पैरामीटर
- 8. एक अभिव्यक्ति <Func<,>> प्रतिबिंब
- 9. अभिव्यक्ति <Func<T,bool>> जेनेरिक विधि
- 10. गतिशील अभिव्यक्ति बनाना <Func<T,Y>>
- 11. क्या उपयोग करें? प्रतिनिधि, घटना, या Func <T>?
- 12. Func <T, String> को Func <T, bool>
- 13. सी # Func <> लाइब्रेरी में प्रतिनिधियों
- 14. Moq फ्रेमवर्क Func <T,T>
- 15. रेजर Func <ऑब्जेक्ट, ऑब्जेक्ट> MvcHtmlString
- 16. Func <T> आउट पैरामीटर
- 17. Nullable Func <T, TResult>
- 18. गतिशील रूप से Func <> प्रकार
- 19. प्रयोग जब (Func <bool>) विधि
- 20. अभिव्यक्ति कैसे बनाएं <Func <गतिशील, गतिशील >> - या यह एक बग है?
- 21. Moq.Mock <अभिव्यक्ति <Func<T,bool> >>() - Moq
- 22. सी # एक अभिव्यक्ति <Func <SomeType>> को अभिव्यक्ति में कैसे परिवर्तित करें <Func <OtherType>>
- 23. अभिव्यक्ति <Func <TModel, string >> अभिव्यक्ति के लिए <क्रिया <TModel>> "गेटर" "सेटर"
- 24. <script></script> या <script />?
- 25. दो अभिव्यक्तियों को कैसे जांचें <Func <T, bool>> वही
- 26. एक नेस्टेड जेनेरिक अभिव्यक्ति लौटना <Func <T, bool>>
- 27. अभिव्यक्ति <Func <TModel, TProperty >> ऑब्जेक्ट प्रारंभिकता के लिए संपत्ति के रूप में?
- 28. Func <> और अभिव्यक्ति <Func<>> परिवर्तनीय क्यों हैं? मेरे मामले में कोई काम क्यों करता है?
- 29. Func <T,TResult> कैसे काम करता है?
- 30. मैं गतिशील रूप से अभिव्यक्ति कैसे बना सकता हूं <Func <MyClass, bool >> predicate?
हां, मुझे डर है कि जवाब इस से बेहतर नहीं होगा। यह कुछ प्रकार के कोड नौकरशाही की तरह शुद्धता के एक पहलू पर जीता है। (यानी स्थिरता के बावजूद हमेशा पूर्वानुमान का उपयोग किया जाना चाहिए)। –