【发布时间】:2015-07-24 14:02:33
【问题描述】:
我想创建一个函数,该函数将引用的参数作为对至少一定长度的数组的引用,以便该函数知道有足够的空间来写入它需要写入的所有数据数组。
这在 VB.NET 中可行吗?
目前我正在ReDim'ing 引用的数组,但我不确定这是否真的有效。 (我想我可以测试这个方法并通过将一个数组传递给 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...有没有更好的如何管理?
【问题讨论】:
-
看起来这个功能可能“做得太多”。它显然找到/获取字节数组,但 also 返回一个布尔值,指示其他内容。如果/当没有数据或其他失败没有返回时,返回一个空数组以表示失败或没有可用的数据。鉴于我们所知甚少,这种方式似乎过于雄心勃勃。
-
你说得对,@Plutonix。最好为此使用结构,然后让布尔函数采用结构。
-
@Plutonix 该函数与硬件设备交互,该设备在 COM 端口上返回各种非固定长度的数据,其中部分或全部可能为零。布尔值表示通信是否失败或由于某种原因被取消(例如 COM 尚未正确设置),在这种情况下,数组仍将全为零,但不是因为返回的数据为零,所以需要一些辨别差异的方法。
-
@MichaelMcPherson 好建议,我一直在回避它,尽管我正在与之交互的 H/W 有大量设置,我想编写“setter”函数来将它们视为如果它们是属性。为每种不同的设置类型设置不同的结构会使类变得非常混乱。
标签: arrays vb.net parameters pass-by-reference