如何从VB.Net中的数组中删除值

时间:2016-04-29 17:36:08

标签: vb.net

我有一个包含这些值的数组

{1, 5, 16, 15}

我想删除第一个元素,以便现在显示值。

{Null, 5, 16, 15}

然后我想再次检查并删除第一个非null值,这将产生:

{Null, Null, 16, 15}

我如何在VB中编码?

4 个答案:

答案 0 :(得分:3)

试试这个

Dim i As Integer

For i = 0 To UBound(myArray)
    If Not IsNothing(myArray(i)) Then
        myArray(i) = Nothing
        Exit For
    End If
Next i
正如@Andrew Morton所提到的,正常的Integer值不能为Null(Nothing)。有一个可以为null的整数类型Integer?可以设置为Null值(在这种情况下为Nothing)。只有当数组的值为Integer?而不是Integer时,上述代码才适用。

答案 1 :(得分:3)

VB.NET中的Integer是值类型。如果您尝试将其设置为Nothing(VB.NET中没有null),则它将采用其默认值,对于整数为零。

您可以改为使用Nullable(Of Integer),也可以写为Integer?

作为示范:

Option Infer On
Option Strict On

Module Module1

    Sub Main()
        Dim myArray As Integer?() = {1, 5, 16, 15}

        For j = 1 To 3

            For i = 0 To UBound(myArray)
                If myArray(i).HasValue Then
                    myArray(i) = Nothing
                    Exit For
                End If
            Next i

            ' show the values...
            Console.WriteLine(String.Join(", ", myArray.Select(Function(n) If(n.HasValue, n.Value.ToString(), "Nothing"))))

        Next

        Console.ReadLine()

    End Sub

End Module

输出:

  

没什么,5,16,15
  没什么,没什么,16,15
  没什么,没什么,没什么,15

如果您对与C#的区别感兴趣,请参阅,例如Why can you assign Nothing to an Integer in VB.NET?

答案 2 :(得分:0)

试试这个:

Dim strArray() As Integer = {1, 5, 16, 15}
Dim strValues = strArray().ToList
Dim index = 3
strValues = strValues.Where(Function(s) s <> strValues(index)).ToArray

答案 3 :(得分:0)

您可以使用以下内容:

Dim myArray(3) As Integer
    myArray(0) = 1
    myArray(1) = 2
    myArray(2) = 3
    myArray(3) = 4
myArray = removeVal(myArray, 2)

-

Function removeVal(ByRef Array() As Integer, ByRef remove As Integer) As Integer()
    Array(remove) = Nothing
    Return Array
End Function