दिनांक / समय डेटा प्रकार की प्रकृति को देखते हुए इसमें कोई nullमान नहीं हो सकता है , अर्थात इसमें एक मान शामिल करने की आवश्यकता है, यह रिक्त नहीं हो सकता है या इसमें कुछ भी नहीं हो सकता है। यदि आप एक तारीख / समय चर के रूप में चिह्नित करते हैं nullableतो केवल आप इसे एक शून्य मान असाइन कर सकते हैं। तो आप जो करना चाह रहे हैं वह दो चीजों में से एक है (और भी हो सकता है लेकिन मैं केवल दो के बारे में सोच सकता हूं):
यदि आपके पास इसके लिए कोई मान नहीं है, तो अपने चर के लिए न्यूनतम दिनांक / समय मान असाइन करें। आप अधिकतम तिथि / समय मान के साथ-साथ जिस किसी भी तरह से आपको सूट करेंगे। बस यह सुनिश्चित करें कि आप अपनी तिथि / समय मानों की जाँच करते समय लगातार साइट-वाइड हैं। उपयोग करने minया maxइसके साथ रहने का निर्णय लें ।
अपनी तिथि / समय चर के रूप में चिह्नित करें nullable। इस तरह से आप अपनी तिथि / समय चर सेट कर सकते हैं nullयदि आपके पास इसके लिए चर नहीं है।
मुझे एक उदाहरण का उपयोग करके अपना पहला बिंदु प्रदर्शित करने दें। DateTimeवैरिएबल प्रकार अशक्त करने के लिए सेट नहीं किया जा सकता है, यह इस मामले में, एक मूल्य की जरूरत है मैं करने के लिए यह निर्धारित करने के लिए जा रहा हूँ DateTimeअगर वहाँ कोई मूल्य नहीं है के न्यूनतम मूल्य।
मेरा परिदृश्य यह है कि मेरे पास एक BlogPostवर्ग है। इसके कई अलग-अलग क्षेत्र / गुण हैं लेकिन मैंने इस उदाहरण के लिए केवल दो का उपयोग करने के लिए चुना। DatePublishedउस समय होता है जब पोस्ट को वेबसाइट पर प्रकाशित किया गया था और उसमें एक तिथि / समय मान होना चाहिए। DateModifiedजब कोई पोस्ट संशोधित की जाती है, तो उसमें कोई मान नहीं होता है, लेकिन एक मान हो सकता है।
public class BlogPost : Entity
{
public DateTime DateModified { get; set; }
public DateTime DatePublished { get; set; }
}
ADO.NETडेटाबेस से डेटा प्राप्त करने के लिए उपयोग करना (असाइनमेंट DateTime.MinValueहै इसका कोई मूल्य नहीं है):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? DateTime.MinValue : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
आप DateModifiedफ़ील्ड को चिह्नित करके मेरे दूसरे बिंदु को पूरा कर सकते हैं nullable। अब आप इसे सेट कर सकते हैं nullयदि इसके लिए कोई मूल्य नहीं है:
public DateTime? DateModified { get; set; }
ADO.NETडेटाबेस से डेटा प्राप्त करने के लिए उपयोग करना , यह ऊपर से किए गए तरीके से थोड़ा अलग दिखाई देगा ( nullइसके बजाय असाइन करना DateTime.MinValue):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? (DateTime?)null : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
मुझे उम्मीद है कि इससे किसी भी भ्रम को दूर करने में मदद मिलेगी। यह देखते हुए कि मेरी प्रतिक्रिया लगभग 8 साल बाद आप शायद अब तक एक विशेषज्ञ सी # प्रोग्रामर हैं :)