2017-08-10 28 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オブジェクトのnullチェックをチェックすることができません。自分自身をチェックしていますが、indexのようなエラーが発生しています。任意のボディは、nullチェックを行う方法を私に示唆することができますし、私はその1つの代わりにmuのカスタムエラーメッセージを表示したい、ここで適格性オブジェクトは、データを持っていません。インデックスが配列の境界外にあります。

+0

にIsDBNull(Member.Eligibility(0))すると 新しい例外を投げる(String.Formatの(ERROR_MSG、 - サブスクライバ)) END IF私もこの1を試しませんが、何の使用同じエラーした場合。 – harry

+3

'Member.Eligibility'が空である可能性があります – litelite

+1

'Member.Eligibility'がインデックス(配列、リストなど)を持つものであれば、最初に何かが含まれているかどうかを確認する必要があります:' If Member.Eligibility.Count> 0 Then'です。それ以外の場合は、索引を持たないオブジェクトから索引0にアクセスしようとしないで、Maximoの解答を使用してください。 –

答えて

2

他にも述べたように、資格は空である場合があります。あなたがEligibilityがList of Of Objectであることを明確にしたので、私はそれを反映するために以下のコードサンプルを更新しました。ここ

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 Trueですが、資格が何であるかは彼のコードからはっきりしていません。特にプロパティ名が単数であるため、それはオブジェクトであることが期待されます。さもなければ、それはメンバーがn個の資格項目を有することができるという事実を反映して複数でなければならない。 – mscheker

+0

ここで、Memberはオブジェクトであり、Eligibilityはオブジェクト内の.object項目です。 – harry

関連する問題