2017-08-10 142 views
0
Private Sub GetGeneralMemberInformation(Member As WebServices.MemberInfoService.Member) 
     Try 
      Dim error_msg As String = "The following Member is not Eligible to display the data: {0} " 
      SubscriberId = Member.SubscriberId 
      If Member.Eligibility(0) Is Nothing Then 
       Throw New Exception(String.Format(error_msg, SubscriberId)) 
      End If 
     Catch ex As Exception 
      Throw ex 
     End Try 
    End Sub 

我無法檢查對Eligibility對象執行空檢查,同時檢查自己我得到像索引這樣的錯誤超出了數組邊界。任何機構可以建議我如何做空檢查,我想顯示mu自定義錯誤消息,而不是那個,這裏的資格對象沒有任何數據。索引超出了數組的界限

+0

如果IsDBNull(Member.Eligibility(0))然後 拋出新的異常(String.Format(error_msg,SubscriberId)) End如果我也嘗試過這一個也沒有使用相同的錯誤。 – harry

+3

'Member.Eligibility'可能爲空 – litelite

+1

如果'Member.Eligibility'有索引(數組,列表,無論什麼),那麼你應該先檢查它是否包含任何東西:'If Member.Eligibility.Count> 0然後'。否則,請停止嘗試訪問沒有索引的對象的索引0,並使用Maximo的答案。 –

回答

2

正如其他人所指出的,資格可能是空的。既然你澄清了資格是一個列表(對象),我更新了下面的代碼示例以反映這一點。

Imports System 
Imports System.Collections.Generic 

Public Module Module1 
    Public Sub Main() 
     Dim member1 = New Member() 
     member1.Eligibilities = New List(Of MemberEligibility) 

     ' REMARKS: List is empty 
     If member1.Eligibilities.Count > 0 Then 
      If member1.Eligibilities(0) Is Nothing Then 
       Console.WriteLine("First element is NULL") 
      End If 
     End If 

     ' REMARKS: Add one element to list 
     member1.Eligibilities.Add(New MemberEligibility()) 

     ' REMARKS: List contains one element   
     If member1.Eligibilities.Count > 0 Then 
      If member1.Eligibilities(0) IsNot Nothing Then 
       Console.WriteLine("First element is initialized") 
      End If 
     End If 

    End Sub 
End Module 

Public Class Member 
    Private _eligibility As MemberEligibility 
    Private _eligibilities As List(Of MemberEligibility) 

    Public Sub New() 
    End Sub 

    Public Property Eligibility As MemberEligibility 
     Get 
      Return Me._eligibility 
     End Get 

     Set 
      Me._eligibility = Value 
     End Set 
    End Property 

    Public Property Eligibilities As List(Of MemberEligibility) 
     Get 
      Return Me._eligibilities 
     End Get 

     Set 
      Me._eligibilities = Value 
     End Set 
    End Property 
End Class 

Public Class MemberEligibility 
    Public Sub New() 
    End Sub 
End Class 

這是一個.NET Fiddle顯示上述代碼的行動。

+0

Member.Eligibility可能是東西,但只有0的計數 –

+0

@the_lotus真的,但它是不清楚他的代碼是什麼資格,特別是因爲屬性名稱是單數的,我希望它是一個對象;否則,它應該是複數,反映會員可以有n個資格項目的事實。 – mscheker

+0

這裏Member是對象,Eligibility是對象內的列表項.object。 – harry