【发布时间】:2014-02-06 07:21:26
【问题描述】:
我想问一些关于 VB.NET 代码的问题。我深受这个问题的困扰。如果您知道我的问题的解决方案,请回答我或给我一些 cmets。
'Declare a structure "Gene"
Public Structure Gene
Dim Seq() As Integer
End Structure
'Here is a procedure, it changes original value.
Public Sub Mutation(ByVal OriginalGene As Gene, ByRef TargetGene As Gene)
Dim P1 As Integer
Dim P2 As Integer
Dim Temp As Integer
P1 = Int((N_Jobs - 1 + 1) * Rnd(RndNum) + 0)
P2 = Int((N_Jobs - 1 + 1) * Rnd(RndNum + 1) + 0)
TargetGene.Seq = OriginalGene.Seq
Temp = TargetGene.Seq(P1)
TargetGene.Seq(P1) = TargetGene.Seq(P2)
TargetGene.Seq(P2) = Temp
End Sub
【问题讨论】:
-
Gene是按值传递的,但是其中一个成员是对数组的引用,因此您是按值传递引用,它仍然是引用。假设我有一张纸,上面有一个帐号。我把纸复印给你(按价值传递) 你从账户里取钱。尽管我按价值通过了该文件,但我去帐户并看到钱已被提取。 -
谢谢,因为你的比喻,我完全理解了这个问题。那我能做些什么来防止原始数组被改变呢?
-
可以传副本,也可以传只读接口。