2010-11-22 12 views
8

एक सच में बोरिंग सवाल है, खेद है, लेकिन मैं वास्तव में यह है कि अभी तक पता नहीं है;) मैं हमेशा string.empty की कोशिश की है, लेकिन एक दशमलव के साथ यह एक त्रुटि पैदा करता है।वीबी जांच करें कि पूर्णांक खाली

क्या कोई फ़ंक्शन है? दुर्भाग्य से, सबसे सरल प्रश्नों के लिए, वहाँ गूगल पर कोई जवाब

उत्तर

15

आपका शीर्षक (और टैग) एक "int" के बारे में पूछता है, लेकिन आपके सवाल का कहना है कि यदि आप एक "दशमलव" के साथ एक त्रुटि हो रही है। जब यह एक value type (जैसे कि एक IntegerDecimal, आदि के रूप में,) की बात आती है किसी भी तरह से, वहाँ के रूप में "खाली" ऐसी कोई बात नहीं है। उन्हें 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

बस एक ओर ध्यान दें: वास्तव में आप * * एक मान प्रकार के लिए कुछ भी नहीं प्रदान कर सकते हैं वीबी नेट में। लेकिन उस स्थिति में, कुछ भी 'शून्य' लेकिन 'डिफ़ॉल्ट (टी)' का मतलब नहीं है, इसलिए पूर्णांक के लिए यह 0 – jeroenh

+0

@ जेरोहेन जैसा ही है: यह सही है। ध्यान दें कि मैंने कहा है कि उन्हें 'कुछ भी नहीं' पर सेट नहीं किया जा सकता है जैसा कि आप संदर्भ प्रकार * के साथ कर सकते हैं। एक मान प्रकार को 'कुछ भी नहीं' पर सेट करने से इसे अपने डिफ़ॉल्ट प्रकार में वापस शुरू किया जाएगा। मुद्दा यह है कि मूल्य प्रकारों के लिए ऐसी कोई 'शून्य' या "खाली" स्थिति नहीं है; वे हमेशा एक मूल्य रखते हैं। –

+0

हाल ही में ध्यान दें, 'मेरा सेकेंड फॉर्फाइट नम्बर इंटीजर के रूप में मंद करें?' 'Dim MySecondFavoriteNumber के रूप में समान है (पूर्णांक का) –

0

ठीक है, एक संख्या के लिए डिफ़ॉल्ट मान 0 होगा रहे हैं, लेकिन आप भी इस कोशिश कर सकते हैं:

int x = 123; 
String s = "" + x; 

और फिर लंबाई की जाँच करें या यदि स्ट्रिंग 'खाली है।

2

हो सकता है कि क्या आप के लिए देख रहे हैं Nullable है

Dim foo As Nullable(Of Integer) = 1 
    Dim bar As Nullable(Of Decimal) = 2 

    If foo = 1 Then 
     If bar = 2 Then 
      foo = Nothing 
      bar = Nothing 
      If foo Is Nothing AndAlso bar Is Nothing Then Stop 
     End If 
    End If 
संबंधित मुद्दे