2011-02-11 10 views
7

System.Collections.IStructuralEquatable और System.Collections.IStructuralComparable .NET 4 में जोड़े गए थे, लेकिन वे IEquatable<T> और IComparable<T> जैसे सामान्य क्यों नहीं हैं?क्यों नहीं संरचनात्मक योग्य और संरचनात्मक सामान्य है?

+0

क्योंकि सी # जेनेरिक आपको एक प्रकार पैरामीटर के लिए संरचनात्मक आवश्यकताओं को निर्दिष्ट नहीं करने देते हैं। – Ani

उत्तर

4

example on MSDN यहां उत्तर का एक हिस्सा देता है; यह समरूप समानता के बजाए विषम समानता के लिए उपयोगी प्रतीत होता है - यानी यह जांचने के लिए कि के दो ऑब्जेक्ट्स (/ मान) संभावित रूप से विभिन्न प्रकार को बराबर माना जाना चाहिए। ऐसे परिदृश्यों में, यह बेहद संभव है कि कॉलिंग कोड object (विषम डेटा का प्रतिनिधित्व करने के लिए) से निपट रहा है। और सामान्य तरीके तब अच्छी तरह से खेल नहीं है।

+2

हालांकि, अन्य 'ट्यूपल' कक्षाएं केवल 'झूठी' वापस आती हैं यदि अन्य वस्तु बिल्कुल वही प्रकार नहीं है। 'ऐरे' इसे सही ढंग से लागू करने लगता है ... – thecoop

+0

ऐरे मेरे लिए टुपल जैसा ही व्यवहार करता है। यह परीक्षण विफल रहता है: Assert.IsTrue (स्ट्रक्चरल कॉम्पैरिसन। स्ट्रक्चरल एक्वालिटी कॉम्पैयर। एक्वाल्स (नया [] {5, 10}, नया [] {5.0, 10.0})); –

संबंधित मुद्दे

 संबंधित मुद्दे