2010-12-28 5 views

उत्तर

17

हाँ, यह सही है की दूसरी पंक्ति में अपवाद वृद्धि करने के लिए बेहतर होगा। वर्तमान Nullable<T> वस्तु के मूल्य का documentation

पाठ प्रतिनिधित्व से अगर HasValue संपत्ति एक खाली स्ट्रिंग ("") यदि HasValue संपत्ति गलत है सच है, या।

भी ध्यान रखें कि Nullable<T>.Equals और Nullable<T>.GetHashCode इस मामले में फेंक नहीं है, लेकिन है कि Nullable<T>.GetType फेंक करता है। ऐसा इसलिए है क्योंकि Object.Equals, Object.GetHashCode और Object.ToStringNullable<T> के लिए ओवरराइड किए गए हैं लेकिन Object.GetType नहीं है (क्योंकि यह virtual के रूप में चिह्नित नहीं किया जा सकता है)।

+0

ठीक है, आपके उत्तर के लिए धन्यवाद। लेकिन आप कैसे सोचते हैं कि यह सही तरीका है? क्योंकि यदि आप स्ट्रिंग tmp = null का उपयोग करेंगे; tmp.ToString() यह अपवाद –

+0

बढ़ाएगा क्योंकि 'HasValue' के साथ एक शून्य प्रकार' गलत 'संदर्भ' नहीं है। एक वैचारिक परिप्रेक्ष्य से, एक शून्य प्रकार एक मूल्य प्रकार का प्रतिनिधित्व करता है जिसमें मूल्य "गायब" होने की संभावना है। जब मूल्य गुम हो जाता है तो हम प्रतिनिधित्व करने के लिए 'शून्य' का उपयोग करते हैं, लेकिन यह 'शून्य' संदर्भ के समान नहीं है। ध्यान दें कि 'tmp.Value'' tmp' के मामले में 'हसलव्यू' के साथ एक शून्य प्रकार के उदाहरण के रूप में फेंक देगा। मूल्य गुम है इसलिए कहा गया मान प्राप्त करने की कोशिश करनी चाहिए और तदनुसार फेंक देना चाहिए। – jason

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