我想创建一个函数,该函数接受对至少一定长度的数组的引用的参数,以便函数知道有足够的空间来写入它需要写入的所有数据。阵列。
这在VB.NET中是否可行?
目前我ReDim
正在引用数组,但我不确定这是否真的有效。 (我想我可以测试这个方法并通过将数组传递给小而打破它,看看,会暂时尝试)
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 ...有没有更好的管理这个的方式?
答案 0 :(得分:3)
您的功能应该改为使用流。
Public Function Foo(ByVal stream As Stream) As Boolean
'Write bytes to stream
End Function
对于eaxmple,您可以使用MemoryStream
Dim stream = new MemoryStream()
Foo(stream)
Dim array = stream.ToArray() 'Call ToArray to get an array from the stream.
答案 1 :(得分:2)
据我所知,你不能在参数列表中指定数组的大小。
但是,您可以像查看当前正在执行的操作一样检查数组的大小,然后抛出ArgumentException。这似乎是在方法开始时验证数据的最常用方法之一。
答案 2 :(得分:1)
我实际上尝试的类似于你在这里做的事情,但是像这样:
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))
然后你可以将错误冒充给用户,这就是你想要做的,对吗?