通过引用传递数组元素

Posted

技术标签:

【中文标题】通过引用传递数组元素【英文标题】:Passing an array element by reference 【发布时间】: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 上按预期工作。 【参考方案1】:

代码很好。绝对是您正在使用的编译器中的错误。

【讨论】:

以上是关于通过引用传递数组元素的主要内容,如果未能解决你的问题,请参考以下文章

C ++通过引用其他类传递二维数组

通过引用将字符串数组传递给 C 函数

值传递和引用传递的区别

传递对 C# 数组中元素的引用

通过引用或值传递的数组[重复]

C++ 通过引用传递数组