2011-11-22 15 views
5

के लिए ऑब्जेक्ट। कॉम्पारे (ऑब्जेक्ट) मैं object[] में ऑब्जेक्ट्स की तुलना करने की कोशिश कर रहा हूं जो कि एक ही प्रकार (रनटाइम पर अज्ञात) हैं। वे System.string, int, decimal, Datetime, या bool प्रकार हैं।अज्ञात डेटा प्रकार

क्या इन वस्तुओं में से दो की तुलना करने का कोई तरीका है यह निर्धारित करने के लिए कि क्या कोई उन्हें अपने उचित प्रकार में डालने के बिना किसी से बड़ा या उससे कम है?

+0

आपके पास कम से कम उन्हें IComparable में डालना है और फिर तुलनात्मक का उपयोग करना है। – user629926

उत्तर

7

सभी प्रकार के प्रश्नों में आईसीओपरपेबल लागू करने के प्रकार, इसलिए, यदि तत्वों की तुलना करने में सक्षम होना आपके सरणी की आंतरिक आवश्यकता है, तो आप इसे IComparable[] के बजाय घोषित कर सकते हैं।

+1

हां, आप 3 सेकंड तेज थे ;-) –

2

उन प्रकार के सभी IComparable इंटरफ़ेस को लागू है, तो आप IComparable करने के लिए अपने वस्तुओं कास्ट कर सकते हैं (या बस object[] के बजाय एक IComparable[] सरणी रखने के लिए)। फिर आप CompareTo(object x) विधि का उपयोग कर सकते हैं।

1

आपके द्वारा उल्लेख किए जाने वाले सभी प्रकार IComparable लागू करते हैं, ताकि आप IComparable.CompareTo का उपयोग कर सकें। एक उदाहरण के रूप में:

object[] ints = new object[] { 2, 1, 3}; 
object n = 2; 
var compareResults = ints.OfType<IComparable>().Select(c => c.CompareTo(n)); 
संबंधित मुद्दे