【发布时间】:2016-04-09 02:08:32
【问题描述】:
我正在使用Mono compiler 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,它接受两个数组元素。
【问题讨论】:
-
看起来像 Mono VB 编译器中的一个错误。等效的 C# 工作正常(使用 Ideone、Mono 4.0.1 测试)
-
是的,请将错误报告给bugzilla.xamarin.com
-
minimal reproducible example 的极好例子——这类问题像摇马粪便一样罕见
-
使用 VB.Net Visual Studio 2015, Framework 4.5.2 在 Windows 上按预期工作。
标签: .net arrays vb.net mono pass-by-reference