通过引用传递数组元素

7
我正在使用 Mono 编译器 v4.2.1(.NET Framework 4.5)编译以下代码:
Module Module1
    Sub Change(ByRef x As Integer)
        x += 1
    End Sub

    Sub Main()
        Dim arr() As Integer = {1}
        Change(arr(0))
        Console.WriteLine(arr(0))
    End Sub
End Module 

生成的输出是:1。为什么 x 参数没有被引用绑定到数组元素?有没有办法在不传递数组的情况下使它工作? 附加细节:
  • 我正在通过HackerRank运行上述代码。
  • 当从Visual Studio 2010/2012运行时,上述代码会产生输出2。
  • 不确定动机是否对问题很重要,但是传递数组元素的引用非常有用。例如,可以实现接受两个数组元素的Swap函数。

2
看起来是Mono VB编译器的一个bug。C#的等价代码可以正常工作(在Ideone上进行了测试,使用的是Mono 4.0.1)。 - Thomas Levesque
1
请将错误报告给 http://bugzilla.xamarin.com/。 - knocte
2
[mcve]的绝佳示例 - 这类问题就像稀有的摇摆马粪一样罕见。 - David Wilson
在Windows上,使用VB.Net Visual Studio 2015,Framework 4.5.2预期效果如实显示。 - dummy
1个回答

1

代码没问题。你使用的编译器肯定有bug。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接