2012-03-07 12 views
12

बनाना मैं सी # में एक शून्य (?) कक्षा कैसे बना सकता हूं? पसंद:नाली योग्य वर्ग

public class Hello1 { 
    public int Property1 { get; set; } 
} 

public class Hello2 { 
Public Hello1? Property2 { get; set; } //Hello1 should work when it has "?" 
} 

मैं हैलो 1 कक्षा को "हैलो 1" फॉर्म लेने के लिए बनाना चाहता हूं? अगर जरुरत हो।

+1

यह http://stackoverflow.com/questions/3132667/nullable-class – evasilchenko

उत्तर

31

आपको संदर्भ प्रकारों के लिए एक शून्य प्रकार बनाने की आवश्यकता नहीं है। वे पहले से ही शून्य हैं। आपको केवल int, bool, दशमलव, आदि जैसे मान प्रकारों के लिए ऐसा करने की आवश्यकता है ...

+0

का डुप्लिकेट है ठीक है, मैं KeyValuePair को भ्रमित कर रहा था एक कक्षा के साथ। यह एक संरचना थी इसलिए इसे "?" की आवश्यकता थी। मैं एक ही चीज़ बनाने की कोशिश कर रहा था। यह समझ में आता है। – iefpw

8

आपको इसकी आवश्यकता नहीं है; संदर्भ प्रकार पहले से ही null हो सकते हैं। संरचनाओं के लिए, बस ?संलग्न करना कार्य करेगा। तो बस ? हटाएं, और सामान्य रूप से == null का उपयोग करके null देखें।

0

Hello1 पहले से ही शून्य है। आपको अपनी संपत्ति पर ? की आवश्यकता नहीं है।

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

1

सभी कक्षाएं शून्य हैं। nullable वैल्यू प्रकारों के लिए है जो शून्य नहीं हो सकते हैं

0

Hello1 पहले से ही एक संदर्भ प्रकार है, इसलिए यह null पहले से ही हो सकता है।
नालीदार वाक्यविन्यास "वर्गनाम?" केवल वैल्यू टाइप्स पर लागू किया जा सकता है, जैसे int, DateTime, float इत्यादि, जो आमतौर पर null नहीं हो सकते हैं।

2

बस प्रश्नचिह्न को हटाएं। सभी वर्ग डिफ़ॉल्ट रूप से शून्य हैं। केवल मूल्य-प्रकार की वस्तुओं (जैसे संरचना) को स्पष्ट रूप से निरर्थक बनाने की आवश्यकता है।

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