2008-09-21 20 views
59

मैं एक नेट किताब पढ़ रहा हूँ, और कोड उदाहरणों में से एक में इस क्षेत्र के साथ एक वर्ग परिभाषा है:"डेटटाइम" क्या है? सी # में मतलब है?

private DateTime? startdate 

DateTime? क्या मतलब है?

+0

https://stackoverflow.com/questions/2690866/what-is-the-purpose-of-a-question-mark-after-a-type-for-example-int-myvariabl – Fandango68

उत्तर

117

DateTime चूंकि आप एक DateTimeवस्तु, नहीं एक संदर्भ मिलता है, जब आप एक क्षेत्र या उस प्रकार के चर घोषित एक struct, नहीं एक class है। और, उसी तरह intnull नहीं हो सकता है, तो क्या यह DateTime ऑब्जेक्ट कभी शून्य नहीं हो सकता है, क्योंकि यह संदर्भ नहीं है।

प्रश्न चिह्न जोड़ना एक nullable type में बदल जाता है, जिसका अर्थ या तो है कि यह एक DateTime वस्तु, या यह null है।

DateTime? जहां Nullable अपने आप में एक struct है, Nullable<DateTime> के लिए वाक्यात्मक चीनी है।

23

यह एक शून्य तिथि है। एक प्राचीन प्रकार/संरचना के बाद ? इंगित करता है कि यह शून्य संस्करण है।

डेटटाइम एक ऐसी संरचना है जो कभी भी शून्य नहीं हो सकती है। MSDN से:

दिनांक समय मान प्रकार 12:00:00 आधी रात, 1 जनवरी 0001 ईसवी, या ई 11 के माध्यम से (यह भी आम युग, या सीई के रूप में जाना जाता है) से लेकर मूल्यों के साथ दिनांक और समय का प्रतिनिधित्व करता है: 5 9: 5 अपराह्न, 31 दिसंबर, 99 99 ईडी (सीई)

DateTime? हालांकि शून्य हो सकता है।

+1

"संभावित समय का संभावित डुप्लिकेट ? " समतुल्य "Nullable " के लिए सी # में वाक्य रचनात्मक चीनी है। –

10

यह शून्य से < डेटटाइम> के बराबर है। आप "?" जोड़ सकते हैं किसी भी प्राचीन प्रकार या संरचना के लिए।

13

? एक मान प्रकार के लिए प्रत्यय के रूप में शून्य कार्य के लिए अनुमति देता है जो असंभव रूप से असंभव होगा।

http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

एक वस्तु जिसका अंतर्निहित प्रकार एक मान प्रकार भी एक अशक्त संदर्भ सौंपा हो सकता है प्रतिनिधित्व करता है।

इसका मतलब यह है कि आप कुछ इस तरह लिख सकते हैं:

DateTime? a = null; 
    if (!a.HasValue) 
    { 
     a = DateTime.Now; 
     if (a.HasValue) 
     { 
      Console.WriteLine(a.Value); 
     } 
    } 

दिनांक समय?के समतुल्य समकक्ष समकक्ष < दिनांक समय > है।

5

यह मूल रूप से आपको प्राइमेटिव्स के लिए एक अतिरिक्त राज्य देता है। यह एक मूल्य हो सकता है, या यह शून्य हो सकता है। यह उन स्थितियों में उपयोगी हो सकता है जहां एक मूल्य को असाइन करने की आवश्यकता नहीं होती है। उदाहरण के लिए, डेटाटाइम का उपयोग करने के बजाय।न्यूनतम या अधिकतम, आप इसे किसी भी मूल्य का प्रतिनिधित्व करने के लिए शून्य निर्दिष्ट कर सकते हैं।

+1

"आदिम" "संरचना" के समान नहीं है; यह वाक्यविन्यास structs के लिए है –

1

जैसा कि हम जानते हैं, डेटटाइम एक संरचना है, इसलिए डेटटाइम एक मान प्रकार है, इसलिए आपको डेटटाइम ऑब्जेक्ट मिलता है, संदर्भ नहीं, क्योंकि डेटटाइम एक वर्ग नहीं है, जब आप उस प्रकार का फ़ील्ड या चर घोषित करते हैं, तो आप प्रारंभ नहीं कर सकते शून्य क्योंकि मान प्रकार शून्य स्वीकार नहीं करते हैं। वैसे ही एक int शून्य नहीं हो सकता है। इसलिए डेटटाइम ऑब्जेक्ट कभी शून्य नहीं होता है, क्योंकि यह संदर्भ नहीं है।

लेकिन कभी-कभी हमें मूल्यवान चर या मूल्य प्रकारों के क्षेत्र की आवश्यकता होती है, उस समय हम उन्हें शून्य प्रकार के बनाने के लिए प्रश्न चिह्न का उपयोग करते हैं ताकि वे शून्य की अनुमति दें।

उदाहरण के लिए: -

दिनांक समय? तिथि = शून्य;

int? अंतराल = शून्य;

उपरोक्त कोड में, परिवर्तनीय दिनांक डेटटाइम का एक ऑब्जेक्ट है या यह शून्य है। अंतराल के लिए ही।

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