接受数组作为只读参数而不进行复制

时间:2015-11-25 10:20:02

标签: vb.net

Visual Basic .NET中有没有办法编写一个以只读方式接受数组参数的函数?也就是说,该函数应该能够使用数组中的数据,但是不能修改元素(即,尝试修改应该导致编译错误)。我正在寻找一种不需要复制数组的方法。

2 个答案:

答案 0 :(得分:2)

当然......使用IEnumerator

  

枚举器可用于读取集合中的数据,但它们   不能用于修改底层集合。

示例:

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
    Dim values() As Integer = {2, 4, 6, 3, 7, 1}
    Foo(values.GetEnumerator)
End Sub

Private Sub Foo(ByVal iter As IEnumerator)
    Dim x As Integer
    While iter.MoveNext
        ' ... do something with "iter.Current" ...
        x = iter.Current
        Debug.Print(x)
    End While
End Sub

答案 1 :(得分:2)

我会使用ReadOnlyCollection来执行此操作

Dim values() As Int32= {2, 4, 6, 3, 7, 1}
Dim readOnlyValues As New ReadOnlyCollection(Of Int32)(values)

这样可以像使用INDEX或FOR EACH方法一样使用它。