2011-06-15 9 views
31

में गैर-शून्य प्रकार के प्रकार बनाएं सी # में int, bool, आदि जैसे गैर-शून्य मूल्य प्रकार कैसे बनाएं?सी #

+1

आप इस संदर्भ में किस संदर्भ का उपयोग करेंगे? इसके द्वारा, मेरा मतलब है, आप क्या करने की कोशिश कर रहे हैं? सी # में अपनी कक्षाओं का उपयोग करके बनाई गई वस्तुओं का उपयोग करते समय आप हमेशा शून्य की जांच कर सकते हैं। और यह अजीब बात है कि आप "टाइप" शब्द का उपयोग कर रहे हैं। यदि आपने अपने प्रश्न में कुछ संदर्भ जोड़ा है तो समाधान को समझना आसान होगा। – stephenbayer

+0

असाइनमेंट ऑपरेटर ओवरलोड करने योग्य होने पर AFAIK गैर निरर्थक संदर्भ प्रकार संभव होगा। हालांकि यह सी # में मामला नहीं है। दूसरी पकड़ 'मायटाइप प्रकार' है, शुरुआत में शून्य होगी। –

+2

@stephenbayer: nulls * खराब * हैं। रन-टाइप नल चेक मूल रूप से रन-टाइप प्रकार चेक से अलग नहीं है। अगर मैं आपको एक स्ट्रिंग देता हूं और आप उस पर विधियों को कॉल करते हैं, तो आपको पता नहीं चलेगा कि यह रनटाइम के दौरान उभरता है या नहीं। कुछ भाषाओं में गैर-निरर्थक संदर्भ प्रकार होते हैं; यदि आप एक शून्य का प्रतिनिधित्व करना चाहते हैं, तो आप एक अलग डेटा प्रकार का उपयोग करते हैं (कई भाषाओं में 'विकल्प 'के बराबर), ताकि आप संकलन समय पर प्रकार प्रणाली के माध्यम से नल-जांच को संवाद और लागू कर सकें। Http://stackoverflow.com/questions/641328/about-the-non-nullable-types-debate/1451909#1451909 देखें। – Juliet

उत्तर

42

हां, इन्हें struct कहा जाता है।

स्ट्रक्चर मूल्य प्रकार हैं, जैसे int, bool और अन्य।

वे उन्हें करने के लिए संबंधित कुछ नियम/सुझाव है:, (मुझे लगता है कि इन सबसे अधिक महत्वपूर्ण हैं)

  • एक struct पारित कर दिया और मूल्य द्वारा आवंटित किया जाता है जब रेफरी या बाहर कीवर्ड इस्तेमाल नहीं .. इसका मतलब यह है कि एक स्ट्रिंग के अंदर जो भी चीज डाली जाती है उसे एक विधि को असाइन या पास करते समय कॉपी किया जाएगा। यही कारण है कि आपको बड़े structs नहीं बनाना चाहिए।

  • आप

  • structs अपरिवर्तनीय होना बेहतर कर रहे हैं, और कोई संपत्ति setters है सी # में एक struct के लिए एक parameterless निर्माता को परिभाषित नहीं कर सकते हैं। आप परिवर्तनीय structs बनाकर असली परेशानी में हो सकता है।

अन्य नियम structs के बारे में माइक्रोसॉफ्ट दस्तावेज़ों के भीतर पाए जा सकते हैं।

गैर-व्यर्थ संदर्भ प्रकार के लिए के रूप में ... इस संभव नहीं है। आपको मैन्युअल रूप से अपने कोड के अंदर नल की जांच करनी होगी।

10

आप परिभाषित कर सकते हैं एक struct:

एक struct प्रकार एक मान प्रकार है कि आम तौर पर इस तरह के एक आयत के निर्देशांक या एक में एक आइटम की विशेषताओं के रूप में संबंधित चरों के छोटे समूहों, संपुटित के लिए इस्तेमाल किया है सूची।

public struct Book 
{ 
    public decimal price; 
    public string title; 
    public string author; 
} 

हालांकि, अगर आप System.Int32 के लिए int तरह उपनाम को परिभाषित नहीं कर सकते हैं और पूरा नाम MyNamespace.Book (या Bookusing MyNamespace; साथ) अपने struct के साथ उल्लेख करने की जरूरत है: निम्न उदाहरण एक साधारण struct घोषणा को दर्शाता है।