सी # 4.0 कॉन्वर्सिस और contravariance का समर्थन करने जा रहा है। लेकिन मैं इस नई सुविधा के लाभों को स्पष्ट रूप से समझ नहीं पा रहा हूं। क्या आप मुझे समझा सकते हैं (स्पष्ट रूप से) हमें इसकी आवश्यकता क्यों है?कॉन्वर्सिस और contravariance के क्या फायदे हैं?
उत्तर
वे आपको कुछ ऐसी चीजें करने की अनुमति देते हैं जो अवधारणात्मक रूप से मान्य हैं, और औपचारिक रूप से स्वीकार्य हैं, लेकिन वर्तमान में भाषा की बाधाओं के कारण अनुमति नहीं है। उदाहरण के लिए:
IEnumerable<int> ints = new List<int> { 1, 2, 3 };
Action<IEnumerable<object>> PrintThings =
x => { foreach(var thing in x) Console.WriteLine(thing); };
PrintThings(ints); // doesn't compile right now :( will compile in 4.0
कोई मौलिक कारण नहीं है कि यह काम नहीं कर सकता है या काम नहीं करना चाहिए; यह भाषा में अनुमति नहीं है। इसे अनुमति देकर, आप प्रोग्रामर के जीवन को आसान बनाते हैं जब ऐसा ऑपरेशन उनके लिए प्राकृतिक होगा।
उपरोक्त मौलिक कारण 4.0 से पहले काम नहीं करेगा यह है कि वाक्य सुरक्षा को खोए बिना इसे अनुमति देने के लिए सिंटैक्स में कोई रास्ता नहीं है। यदि आप इसे अपने उदाहरण के लिए अनुमति देते हैं, तो आप जरूरी रूप से उन उदाहरणों के लिए अनुमति दें जहां सुरक्षा सुरक्षा संरक्षित नहीं है। – Eddie
यह सही है, इसीलिए वे इस परिदृश्य को अनुमति देने के लिए नए "इन" और "आउट" कीवर्ड जोड़ रहे हैं (और IENumerable
इस मुद्दे के बारे में बात करते हुए एक अच्छा लिखना है here।
4.0 में कैसे और कैसे काम करेगा इस बारे में गलत धारणाएं हैं। अब तक मैंने जो सबसे अच्छा स्पष्टीकरण पढ़ा है वह मेरी मार्क ग्रेवेल लिखा गया था।
http://marcgravell.blogspot.com/2009/02/what-c-40-covariance-doesn-do.html
बस दोहराते हैं, ppl की बहुत लगता है कि यह 4.0 में काम करेंगे: यहाँ अपने ब्लॉग पोस्ट देखें कुछ अन्य वर्ग
List<Derived> derived....
public void Method(List<Base> b){}
..in
public class Base{}
public class Derived : Base {}
4.0 में भी, आप इस विधि में सूची को पास करने में सक्षम नहीं होंगे। मार्क बताते हैं, कि क्या सामान्य बाधाओं के लिए कर रहे हैं, और के बाद से 2.0
यह मेरे लिए एक अजीब गैर अनुक्रमक जैसा प्रतीत होता है। सूची को पारित करने का एकमात्र कारण यह नहीं है क्योंकि सूचियां उत्परिवर्तनीय हैं; बेशक आप इस तरह से गुजर नहीं सकते हैं, क्योंकि इसमें आइटम जोड़ने से इस प्रकार के प्रकार के प्रतिबंध टूट जाएंगे। – mquander
@mquander: एक अजीब गैर अनुक्रमक? एपीआई (प्री 4.0) में कुछ भी कहना नहीं है, "यदि आप ऑब्जेक्ट अपरिवर्तनीय हैं तो आप केवल यह ऑपरेशन कर सकते हैं"। – Eddie
मेरा मुद्दा यह है कि तथ्य यह है कि सूची
लाभ है कि, मेरी राय में, सहप्रसरण मदद करने के लिए एक बहुत जेनेरिक्स साथ है जा रहा है में से एक किया जा सकता है है।
मुझे कई स्थितियों का सामना करना पड़ा जहां किसी को स्पष्ट रूप से Cast
से को इसके आधार पर एक विशिष्ट प्रकार का रूपांतरित करने की आवश्यकता है।
class Foo { }
class Bar : Foo { }
// ...
IEnumerable<Foo> foos = new List<Foo>();
IEnumerable<Bar> bars = new List<Bar>();
foos = bars.Cast<Foo>();
// C# 4.0
foos = bars;
इस विषय पर good reference है।
फिर भी, इटालिक्स का अत्यधिक उपयोग एक अच्छा स्पर्श था। – bzlm
क्षमा करें :(कक्षा डीफ़ भूल गए –
- 1. नेट: सहप्रसरण और contravariance
- 2. प्रकार पैरामीटर के डेटाटाइप को कॉन्वर्सिस और contravariance में कैसे तय किया गया है?
- 3. जावा में covariance और contravariance का प्रदर्शन?
- 4. पर्सफोर्स के फायदे क्या हैं?
- 5. जेरेबेल के क्या फायदे हैं?
- 6. लेट्रेक के क्या फायदे हैं?
- 7. Postgresql enum फायदे और नुकसान क्या हैं?
- 8. सी # 4.0 में कॉन्वर्सिस और contravariance के लिए अच्छे, वास्तविक जीवन के उपयोग के मामलों के उदाहरण?
- 9. contravariance
- 10. स्कैला contravariance - असली जीवन उदाहरण
- 11. ओओपी के लिए पर्ल के फायदे और नुकसान क्या हैं?
- 12. LINQ से SQL के फायदे क्या हैं?
- 13. कार्यात्मक प्रोग्रामिंग के क्या फायदे हैं?
- 14. सत्र-प्रति-वार्तालाप के क्या फायदे हैं?
- 15. 64-बिट प्रोसेसर के फायदे क्या हैं?
- 16. आलसी मूल्यांकन के क्या फायदे हैं?
- 17. दृढ़ता अज्ञानता के क्या फायदे हैं?
- 18. पिमकोर के (डी) फायदे क्या हैं?
- 19. QStandardItemModel पर QAbstractItemModel के क्या फायदे हैं?
- 20. करी के व्यावहारिक फायदे क्या हैं?
- 21. विंडोज सर्टिफिकेट स्टोर के क्या फायदे हैं?
- 22. योजना मैक्रोज़ के क्या फायदे हैं?
- 23. संसाधन (.resx) फ़ाइलों के क्या फायदे हैं?
- 24. आत्म-होस्टिंग के फायदे और नुकसान क्या हैं?
- 25. गुण पैटर्न के फायदे और नुकसान क्या हैं?
- 26. प्लग-इन आधारित आर्किटेक्चर के फायदे और नुकसान क्या हैं?
- 27. एआरसी का उपयोग करने के फायदे और नुकसान क्या हैं?
- 28. पीईजीटीके पर पीईक्यूटी के फायदे क्या हैं और इसके विपरीत?
- 29. कोको ढांचे, पुस्तकालयों, और बंडलों के फायदे/नुकसान क्या हैं?
- 30. MySQL और PostgreSQL पर MongoDB के क्या फायदे हैं?
[कोविरिएंस बनाम contravariance] (http://izlooite.blogspot.com/2011/04/covariance-and-contravariance.html) –
बार्ट डी स्मेट में कॉन्वर्सिस और contravariance के बारे में एक महान ब्लॉग प्रविष्टि है [http] (http: //bartdesmet.net/blogs/bart/archive/2009/04/13/c-4-0-feature-focus-part-4-generic-co-and-contra-variance-for-delegate-and-interface- types.aspx)। –