आपका शीर्षक (और टैग) एक "int" के बारे में पूछता है, लेकिन आपके सवाल का कहना है कि यदि आप एक "दशमलव" के साथ एक त्रुटि हो रही है। जब यह एक value type (जैसे कि एक Integer
Decimal
, आदि के रूप में,) की बात आती है किसी भी तरह से, वहाँ के रूप में "खाली" ऐसी कोई बात नहीं है। उन्हें Nothing
पर सेट नहीं किया जा सकता है क्योंकि आप reference type (जैसे String
या कक्षा) के साथ कर सकते हैं। इसके बजाय, मूल्य प्रकारों में एक निहित डिफ़ॉल्ट कन्स्ट्रक्टर होता है जो स्वचालित रूप से उस प्रकार के आपके चर को इसके डिफ़ॉल्ट मान में प्रारंभ करता है।Integer
और Decimal
जैसे संख्यात्मक मानों के लिए, यह 0 है। अन्य प्रकार के लिए, this table देखें।
तो तुम देखने के लिए अगर एक मान प्रकार निम्न कोड के साथ शुरू कर दिया गया देख सकते हैं:
Dim myFavoriteNumber as Integer = 24
If myFavoriteNumber = 0 Then
''#This code will obviously never run, because the value was set to 24
End If
Dim mySecondFavoriteNumber as Integer
If mySecondFavoriteNumber = 0 Then
MessageBox.Show("You haven't specified a second favorite number!")
End If
ध्यान दें कि mySecondFavoriteNumber
स्वचालित रूप से 0 (एक Integer
के लिए डिफ़ॉल्ट मान) पर्दे के पीछे करने के लिए आरंभ नहीं हो जाता कंपाइलर, इसलिए If
कथन True
है। वास्तव में, mySecondFavoriteNumber
की घोषणा से ऊपर निम्नलिखित बयान के बराबर है:
Dim mySecondFavoriteNumber as Integer = 0
बेशक , जैसा कि आप शायद देखा है, वहाँ कोई रास्ता नहीं है पता करने के लिए एक व्यक्ति की पसंदीदा संख्या वास्तव में 0 है कि क्या है, या अगर उन्होंने अभी तक एक पसंदीदा नंबर निर्दिष्ट नहीं किया है। आप वास्तव में एक मान प्रकार Nothing
सेट किया जा सकता है कि जरूरत है, तो आप Nullable(Of T)
इस्तेमाल कर सकते हैं, के रूप में के बजाय चर घोषित:
Dim mySecondFavoriteNumber as Nullable(Of Integer)
और इस प्रकार अगर यह सौंपा गया है देखने के लिए जाँच:
If mySecondFavoriteNumber.HasValue Then
''#A value has been specified, so display it in a message box
MessageBox.Show("Your favorite number is: " & mySecondFavoriteNumber.Value)
Else
''#No value has been specified, so the Value property is empty
MessageBox.Show("You haven't specified a second favorite number!")
End If
बस एक ओर ध्यान दें: वास्तव में आप * * एक मान प्रकार के लिए कुछ भी नहीं प्रदान कर सकते हैं वीबी नेट में। लेकिन उस स्थिति में, कुछ भी 'शून्य' लेकिन 'डिफ़ॉल्ट (टी)' का मतलब नहीं है, इसलिए पूर्णांक के लिए यह 0 – jeroenh
@ जेरोहेन जैसा ही है: यह सही है। ध्यान दें कि मैंने कहा है कि उन्हें 'कुछ भी नहीं' पर सेट नहीं किया जा सकता है जैसा कि आप संदर्भ प्रकार * के साथ कर सकते हैं। एक मान प्रकार को 'कुछ भी नहीं' पर सेट करने से इसे अपने डिफ़ॉल्ट प्रकार में वापस शुरू किया जाएगा। मुद्दा यह है कि मूल्य प्रकारों के लिए ऐसी कोई 'शून्य' या "खाली" स्थिति नहीं है; वे हमेशा एक मूल्य रखते हैं। –
हाल ही में ध्यान दें, 'मेरा सेकेंड फॉर्फाइट नम्बर इंटीजर के रूप में मंद करें?' 'Dim MySecondFavoriteNumber के रूप में समान है (पूर्णांक का) –