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