【问题标题】:Vb.net: Array.clear Clean related Array issue [duplicate]Vb.net:Array.clear Clean 相关的数组问题 [重复]
【发布时间】:2016-08-13 11:12:08
【问题描述】:

Array.clear 函数有问题

这是简单的代码:

Dim Array1() As Double = {1, 2}
Dim Array2(UBound(Array1)) As Double
Array2 = Array1
Array.Clear(Array1, 0, Array1.Length)

Array.Clear 完成后,不仅 Array 1 被清理,Array 2 也被清理。

这里发生了什么?我该怎么做才能防止这种情况发生?

谢谢!

【问题讨论】:

    标签: arrays vb.net


    【解决方案1】:

    发生了什么:

    Array2 = Array1
    

    上面的语句没有将Array1的元素复制到Array2中,而是上面的语句只复制了下面链接中提到的指针

    Assigning one array to another

    由于以上原因,当你这样做时

    Array.Clear(Array1, 0, Array1.Length)
    

    Array1 的值变为 0,Array2 指向 Array 1 的新值,即全为 0。

    如何预防:

    使用复制元素的数组副本。

    Dim Array1() As Double = {1, 2}
    Dim Array2(UBound(Array1)) As Double
    Array.Copy(Array1,Array2,Array2.Length) //Array.Copy(source, target, target.Length)
    Array.Clear(Array1, 0, Array1.Length)
    

    【讨论】:

    • 非常感谢!这都是需要的
    • @NguyenDucLinh 非常欢迎!很高兴我能帮忙:)
    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多