मैं सहमत हूं कि Nullable < डेटटाइम> अन्य विचारों की अनुपस्थिति में बेहतर विकल्प है।
हालांकि आपको अन्य प्रणालियों पर विचार करने की आवश्यकता है जिनके साथ आपको अंतःक्रिया करने की आवश्यकता है।
उदाहरण के लिए:
अगर आप कॉम ग्राहकों को अपनी नेट दिनांक समय उजागर कर रहे हैं, तो आप Nullable < दिनांक समय का उपयोग करने के लिए सक्षम नहीं होंगे>।
यदि आप SQL सर्वर डेटाबेस में मान संग्रहीत कर रहे हैं, तो याद रखें कि SQL सर्वर डेटटाइम को संग्रहीत नहीं कर सकता है। MinValue डेटटाइम के रूप में।
एक और मुद्दा विचार करने के लिए है कि Nullable एक एपीआई के कॉल करने के लिए कुछ जटिलता जोड़ सकते हैं: वे विचार करने के लिए कैसे अशक्त मामले संभाला जाना चाहिए पड़ सकता है। कुछ मामलों में यह शून्य मामले के लिए डिफ़ॉल्ट मान का उपयोग करने के लिए आसान हो सकता है। उदाहरण के लिए, एक ऐसी कक्षा पर विचार करें जो एक संपत्ति "समाप्ति तिथि" का खुलासा करती है, जहां यह इंगित करने के लिए मूल्य की आवश्यकता होती है कि आइटम कभी समाप्त नहीं होता है।
एक दृष्टिकोण Nullable<DateTime>
का उपयोग करना है जो "कभी समाप्त नहीं होता" का प्रतिनिधित्व करता है। एक वैकल्पिक दृष्टिकोण DateTime.MaxValue
के साथ मानक दिनांक समय का उपयोग करना है "कभी समाप्त नहीं होता"।
if (item.ExpiryDate <= DateTime.Today) ...
Nullable<DateTime>
के लिए की तुलना में
:
if (item.ExpiryDate.HasValue && item.ExpiryDate <= DateTime.Today) ...
या TimeCreated को सेट द्वारा TimeLastAccessed चाहिए जब वस्तु है
इस उदाहरण में, के लिए परीक्षण "समाप्त हो चुका है" मानक दिनांक समय के लिए आसान है शुरुआत में – benPearce