2010-09-02 15 views
13

मेरे पास एक अद्यतन फ़ंक्शन है जो एक डेटासेट के माध्यम से एक SQL सर्वर डीबी तालिका अद्यतन करता है। तालिका में से एक फ़ील्ड एक पूर्णांक है और शून्य मान स्वीकार करता है। तो जब मैं अद्यतन फ़ंक्शन को पॉप्युलेट कर रहा हूं, तो फ़ंक्शन एक पूर्णांक चाहता है जब मुझे शून्य में प्रवेश करने का एक तरीका चाहिए।एक इंटीजर नल बनाएं

मैं इसे इस तरह से करने की कोशिश की लेकिन _intDLocation = "" एक अपवाद

Dim _dLocation As String = udDefaultLocationTextEdit.Text 
    Dim _intDLocation As Integer 
    If _dLocation <> "" Then 
     _intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text) 
    Else 
     'NEED HELP HERE 
     _intDLocation = "" 
    End If 

उत्तर

29

पूर्णांकों अशक्त करने के लिए सेट नहीं किया जा सकता फेंकता है। इंटीजर शब्द के बाद आपको एक प्रश्न चिह्न जोड़कर पूर्णांक "शून्य" बनाना होगा। अब _intDLocation अब एक सामान्य पूर्णांक नहीं है। यह Nullable(Of Integer) का एक उदाहरण है।

Dim _dLocation As String = udDefaultLocationTextEdit.Text 
Dim _intDLocation As Integer? 
If _dLocation <> "" Then 
    _intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text) 
Else 
    _intDLocation = Nothing 
End If 
बाद में

, आप अशक्त के लिए आप इस काम, पठनीय सिंटैक्स का उपयोग कर सकते हैं की जाँच करना चाहते हैं:

If _intDLocation.HasValue Then 
    DoSomething() 
End If 

कुछ मामलों में आप एक एक वास्तविक पूर्णांक के रूप में मूल्य का उपयोग करने की, नहीं की आवश्यकता होगी शून्य पूर्णांक। उन मामलों के लिए, आप बस

_intDLocation.Value 

सब के बारे में Nullable here पढ़ें एक्सेस करते हैं।

+2

+1 पूरी तरह से भूल गए कि आप 'इंटीजर' का उपयोग कर सकते हैं। अच्छा और संक्षिप्त। –

+2

इस अन्यथा उत्कृष्ट उत्तर में जोड़ने के लिए: _intDLocation वास्तविकता में शून्य (इंटीजर का) का उदाहरण होगा। यहां Nullable के दस्तावेज़ देखें: http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx –

+1

धन्यवाद, एटियेन। मैं इसे जोड़ दूंगा। – Larsenal

4

इस प्रयास करें:

Dim _dLocation As String = udDefaultLocationTextEdit.Text 

Dim _intDLocation As Nullable(Of Integer) 

If Not String.IsNullOrEmpty(_dLocation) Then 
    _intDLocation = Integer.Parse(_dLocation) 
End If 
0

मेरा आवेदन लेबल कि बाहर खाली (पाठ संपत्ति) शुरू के एक बहुत का उपयोग करता है, लेकिन पूर्णांक के रूप में वृद्धि की जाती जाने की जरूरत है, तो मैं इस आसान समारोह बनाया:

Dim Match_Innings As Integer = Nullinator(Me.TotalInnings.Text) 
:
Public Shared Function Nullinator(ByVal CheckVal As String) As Integer 
    ' Receives a string and returns an integer (zero if Null or Empty or original value) 
    If String.IsNullOrEmpty(CheckVal) Then 
     Return 0 
    Else 
     Return CheckVal 
    End If 
End Function 

यह है कि यह कैसे इस्तेमाल किया जाएगा के विशिष्ट उदाहरण है

आनंद लें!