2009-07-29 24 views
7

मैं सोच रहा था - मैं केवल वैरिएबल को केवल चर को कॉल करने के बजाय एक निरर्थक प्रकार पर उपयोग करना चाहता हूं?निरर्थक चर प्रकार - .value सदस्य

उदाहरण ..

बूल? बी = सच;

मैं बी का उपयोग करने के बजाय मूल्य प्राप्त करने के लिए b.Value का उपयोग क्यों करूं? क्या लाभ या समारोह करता है। वैल्यू कॉल जोड़ता है?

उत्तर

13

मूल्य संपत्ति केवल पढ़ी जाती है और वास्तविक मूल्य प्रकार वापस कर देगी। मूल्य संपत्ति कभी शून्य नहीं हो सकती है।

यदि आप एक शून्य को एक मूल्य वापस करने की उम्मीद करते हैं तो जांच करें .सवैल्यू और फिर संदर्भ मान। उदाहरण के लिए, यदि आप एक साधारण bool करने के लिए एक Nullable का मान देना चाहते हैं तो आप इसके मूल्य है संदर्भित करने के लिए है:

bool? nullableBool = null; 

if (nullableBool.HasValue) 
{ 
    bool realBool = nullableBool.Value; 
} 
हालांकि

, निम्नलिखित नहीं होगा संकलन:

bool? nullableBool = true; 
bool realBool = nullableBool; // Won't work 
+0

बढ़िया! यह समझ आता है। बहुत बहुत धन्यवाद :)) – Valerie

3

। वैल्यू एक बूल के बजाए एक बूल देता है? जो आपको उन कार्यों के पैरामीटर के रूप में उपयोग करने की अनुमति देगा जो शून्य प्रकारों की अपेक्षा नहीं करते हैं।

1

केवल अंतर यह है कि वे 2 अलग-अलग प्रकार हैं। यदि आपके पास बूल है? तो यह एक शून्य प्रकार का बूल है।

आप b.Value को कॉल करते हैं आप वास्तव में एक bool और नहीं एक bool वापस लौट रहे हैं?

सूक्ष्म, लेकिन जब आपको ऑब्जेक्ट के गैर-शून्य संस्करण की आवश्यकता होती है, तो वैल्यू प्रॉपर्टी का उपयोग करें।

+0

टाइपो । सूटल = सूक्ष्म। –

1

मेरे लिए यह इतना मूल्य नहीं है के रूप में संपत्ति "HasValue" है कि मैं उपयोगी

2

पाते हैं कि आप तरीकों/अंतर्निहित प्रकार के गुणों का उपयोग करना चाहते हैं है। वास्तव में बूल पर लागू नहीं होता है। मुझे DateTime साथ वर्णन करते हैं:

DateTime? d; 
int month = d.Value.Month; 

आप महीना संपत्ति सीधे घ से, उपयोग नहीं कर सकते क्योंकि दिनांक समय? इस संपत्ति नहीं है।

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