【问题标题】: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 上按预期工作。

标签: .net arrays vb.net mono pass-by-reference


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多