VB.net 检查数组元素是否存在

VB.net Check if Array Element Exists

我有 2 个子例程调用另一个来写入日志文件。数据放在一个名为 LogData() 的数组中。子例程 1 包含 3 个元素,而子例程 2 包含 4 个元素。如果我只使用所有 LogData() 元素编写日志,则子例程 1 运行时会出错,因为它在 LogData(3) 中不包含任何元素。如何检查 LogData 元素 (3) 是否有值,如果有,将其写入日志?我尝试使用下面的 If 语句,但是这个错误:

If (Not LogData(3) Is Nothing) Then
w.WriteLine("Address   : {0}", LogData(3))
End If

我也试过:

If LogData.Count > 2 Then
If Not arrayList(yourIndex) Is Nothing Then

如果我只是将 LogData() 写入日志文件,我可以只使用循环。但是,因为我在每个元素之间添加文本,所以我无法这样做。

子 1:

        Dim appData As String = GetFolderPath(SpecialFolder.ApplicationData)
        Dim LogPath As String = appData & "\myApplication"
        Dim LogData() As String = {Username, Action, Domain}
        If (Not System.IO.Directory.Exists(LogPath)) Then
            System.IO.Directory.CreateDirectory(LogPath)
        End If
        Using w As StreamWriter = File.AppendText(LogPath & "\log.txt")
            Log(LogData, w)
        End Using

子 2:

        Dim appData As String = GetFolderPath(SpecialFolder.ApplicationData)
        Dim LogPath As String = appData & "\myApplication"
        Dim LogData() As String = {Username, Action, Domain, Address}
        If (Not System.IO.Directory.Exists(LogPath)) Then
            System.IO.Directory.CreateDirectory(LogPath)
        End If
        Using w As StreamWriter = File.AppendText(LogPath & "\log.txt")
            Log(LogData, w)
        End Using

登录子:

Public Shared Sub Log2(LogData As Array, w As TextWriter)
    w.Write(vbCrLf)
    w.WriteLine("Log Entry          : {0} - {1}", DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString())
    w.WriteLine("username : {0}", LogData(0))
    w.WriteLine("Action   : {0}", LogData(1))
    w.WriteLine("Domain   : {0}", LogData(2))
    If (Not LogData(3) Is Nothing) Then
        w.WriteLine("Address   : {0}", LogData(3))
    End If
    w.WriteLine("Application version: " & Application.ProductVersion)
    w.WriteLine("-------------------------------")
End Sub

检查数组长度

Public Shared Sub Log2(LogData() As String, w As IO.TextWriter)
    w.Write(vbCrLf)
    w.WriteLine("Log Entry          : {0} - {1}", DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString())
    w.WriteLine("username : {0}", LogData(0))
    w.WriteLine("Action   : {0}", LogData(1))
    w.WriteLine("Domain   : {0}", LogData(2))

    If LogData.Length = 4 Then'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
        w.WriteLine("Address   : {0}", LogData(3))
    End If

    w.WriteLine("Application version: " & Application.ProductVersion)
    w.WriteLine("-------------------------------")
End Sub