我有一个包含这些值的数组
{1, 5, 16, 15}
我想删除第一个元素,以便现在显示值。
{Null, 5, 16, 15}
然后我想再次检查并删除第一个非null值,这将产生:
{Null, Null, 16, 15}
我如何在VB中编码?
答案 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