VB.NET 可以指定数组参数的大小吗?
Can VB.NET specify the size of an array parameter?
我想创建一个函数,该函数的参数是对至少一定长度的数组的引用,这样该函数就会知道有足够的 space 来写入所有数据它需要写入数组。
这在 VB.NET 中可行吗?
目前我正在 ReDim
'引用数组,但我不确定这是否真的有效。 (我想我可以测试这个方法并通过将数组传递给 small 来破坏它,看看,会立即尝试)
Public Function Foo(ByRef data() As Byte) As Boolean
If Data.Length < 4 Then
ReDim Preserve ProductId(4)
End If
' Other operations that put 4 bytes on the array...
Return True
End Function
即使该方法有效,与仅通知他们参数以某种方式指定长度为 4 相比,我不相信重新调整用户数组的大小真的是一个好主意......有没有更好的管理方式?
不,据我所知,您不能在参数列表中指定数组的大小。
但是,您可以像当前一样检查数组的大小,然后抛出 ArgumentException。这似乎是在方法开始时验证数据的最常见方法之一。
您的函数应该接收流。
Public Function Foo(ByVal stream As Stream) As Boolean
'Write bytes to stream
End Function
例如,您可以使用 MemoryStream
调用您的方法
Dim stream = new MemoryStream()
Foo(stream)
Dim array = stream.ToArray() 'Call ToArray to get an array from the stream.
我实际上会尝试与您在这里所做的类似的事情,但是像这样:
Public Function Foo(ByRef data() As Byte) As Boolean
If Data.Length < 4 Then
Return False
End If
'Other operations...
Return True
End Function
或者这样:
Public Function Foo(ByRef data() As Byte) As String
If Data.Length < 4 Then
Return "This function requires an array size of four"
End If
'Other operations...
Return "True"
End Function
然后,在你的调用函数中,这个:
Dim d As Boolean = Convert.ToBoolean(Foo(YourArray))
然后您可以将错误提示给用户,这正是您想要做的,对吧?
我想创建一个函数,该函数的参数是对至少一定长度的数组的引用,这样该函数就会知道有足够的 space 来写入所有数据它需要写入数组。
这在 VB.NET 中可行吗?
目前我正在 ReDim
'引用数组,但我不确定这是否真的有效。 (我想我可以测试这个方法并通过将数组传递给 small 来破坏它,看看,会立即尝试)
Public Function Foo(ByRef data() As Byte) As Boolean
If Data.Length < 4 Then
ReDim Preserve ProductId(4)
End If
' Other operations that put 4 bytes on the array...
Return True
End Function
即使该方法有效,与仅通知他们参数以某种方式指定长度为 4 相比,我不相信重新调整用户数组的大小真的是一个好主意......有没有更好的管理方式?
不,据我所知,您不能在参数列表中指定数组的大小。
但是,您可以像当前一样检查数组的大小,然后抛出 ArgumentException。这似乎是在方法开始时验证数据的最常见方法之一。
您的函数应该接收流。
Public Function Foo(ByVal stream As Stream) As Boolean
'Write bytes to stream
End Function
例如,您可以使用 MemoryStream
Dim stream = new MemoryStream()
Foo(stream)
Dim array = stream.ToArray() 'Call ToArray to get an array from the stream.
我实际上会尝试与您在这里所做的类似的事情,但是像这样:
Public Function Foo(ByRef data() As Byte) As Boolean
If Data.Length < 4 Then
Return False
End If
'Other operations...
Return True
End Function
或者这样:
Public Function Foo(ByRef data() As Byte) As String
If Data.Length < 4 Then
Return "This function requires an array size of four"
End If
'Other operations...
Return "True"
End Function
然后,在你的调用函数中,这个:
Dim d As Boolean = Convert.ToBoolean(Foo(YourArray))
然后您可以将错误提示给用户,这正是您想要做的,对吧?