2011-04-11 12 views
16

यहाँ दो datetimes की तुलना के दो तरीके हैं बनाम:तुलना datetimes: DateTime.Compare() संबंधपरक ऑपरेटर

DateTime now = DateTime.Now; 
DateTime then = new DateTime(2008, 8, 1); 

// Method 1 
if (DateTime.Compare(then, now) < 0) 
    // ... 

// Method 2 
if (then < now) 
    // ... 

.Compare एक पूर्णांक (-1,0,1) देता है यह बताते हैं कि पहले उदाहरण से पहले है , दूसरे उदाहरण के समान, या बाद में।

मेरा प्रश्न, यही वजह है कि मैं .Compare का उपयोग जब मैं संबंधपरक ऑपरेटर (<, <=, ==, >=, >) सीधे उपयोग कर सकते हैं हैं? ऐसा लगता है कि .Compare का उपयोग करके, मुझे रिलेशनल ऑपरेटरों को वैसे भी नियोजित करने की आवश्यकता है (कम से कम उपर्युक्त उदाहरण में; वैकल्पिक रूप से मैं केस -1, 0 और 1 की जांच करने वाला स्विच स्टेटमेंट बना सकता हूं)।

DateTime.Compare() के उपयोग की आवश्यकता क्या है या आवश्यकता होगी?

उत्तर

14

आमतौर पर, .Compare प्रकारों पर विधियों का उपयोग क्रमबद्ध करने के लिए किया जाता है, न कि सीधे तुलना करने के लिए।

IComparable<T> इंटरफ़ेस, किसी प्रकार पर समर्थित होने पर, कई ढांचे वर्गों को संग्रह को सही तरीके से सॉर्ट करने की अनुमति देता है (जैसे List<T>.Sort, उदाहरण के लिए)।

कहा जा रहा है, यदि आप एक सामान्य वर्ग या विधि के भीतर एक तुलना करने के लिए, प्रकार जो लागू है जब एक ठोस प्रकार अज्ञात है IComparable या IComparable<T> आप तुलना के लिए .Compare() का उपयोग करने की अनुमति देगा करने के लिए अपने सामान्य तर्क सीमित सक्षम होना चाहते हैं ।

+0

सही समझ में आता है, धन्यवाद। – JYelton

5

जब आप ऑब्जेक्ट को IComparable के रूप में पास कर रहे हैं, तो "रिलेशनल" ऑपरेटर उपलब्ध नहीं हैं। इस मामले में, यह आसान हो सकता है।

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