2010-11-10 6 views
20

मैं एक सूची है:सी # संरचना, एक शून्य मूल्य कैसे असाइन करें?

List<int, SomeStruct> 

किसी कारण से, यह मुझे यह करने के लिए शून्य मान आवंटित करने के लिए अनुमति नहीं दे रहा है। अगर मैं कोई संरचना संबद्ध नहीं करना चाहता तो मैं क्या करूँ?

उत्तर

36

उपयोग nullable types:

List<int, SomeStruct?> 

आप सूची क्योंकि structs मूल्य प्रकार के होते हैं का एक तत्व को null असाइन नहीं कर सकते, जबकि null एक खाली सूचक का मतलब है, और इसलिए केवल प्रकार चर संदर्भ के लिए सौंपा जा सकता है।

यह भी ध्यान दें कि List जैसा कि आप इसका उपयोग कर रहे हैं .NET में मौजूद नहीं है! शायद आप Dictionary चाहते हैं?

+0

जब मैं ऐसा करता हूं, संरचनाओं के सदस्य के किसी भी संदर्भ में अब मुझे त्रुटि मिलती है: System.Nullable <> में 'सदस्य' –

+1

@whydna की परिभाषा नहीं है: निरर्थक प्रकारों पर पढ़ें। अनिवार्य रूप से 'कुछ संरचना?' 'Nullable ' के लिए वाक्य रचनात्मक चीनी है। आप सीधे सदस्यों तक नहीं पहुंच सकते हैं, लेकिन यह वह मूल्य है जिसका उपयोग आप मूल्य प्रकार के साथ 'शून्य' अर्थशास्त्र का उपयोग करने के लिए करते हैं। –

+0

आपकी मदद के लिए धन्यवाद :) –

10

सी # एक संरचना एक 'मूल्य प्रकार' है, जो शून्य नहीं हो सकता है।

यदि आप वास्तव में, वास्तव में इसे कम करने में सक्षम होने की आवश्यकता है, तो इसे पीछे के प्रश्न चिह्न जोड़कर 'शून्य' प्रकार में बनाएं।

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

+3

सहमत हुए। समस्या यह है कि मेरे पास संरचना का स्वामित्व नहीं है, मैं बस इसका उपयोग कर रहा हूं :( –

3

जब तक आप एक कस्टम जेनेरिक संग्रह परिभाषित नहीं करते हैं, List<T, U>System.Collections.Generic नामस्थान में मौजूद नहीं है। क्या आप Dictionary<TKey, TValue> का मतलब था?

आप शून्य प्रकारों का उपयोग कर सकते हैं: Using Nullable Types (C# Programming Guide)

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

+1

मैं जवाब देने का विरोध नहीं कर सका जब मैंने देखा कि तीन 'विल' एक प्रश्न का उत्तर दे रहे हैं! = पी –

+5

जहां वहां तीन विल्स हैं तीन तरीके हैं? – RenniePet

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