作者r30307 (RPG)
看板Visual_Basic
標題[.NET] ByVal失效?
時間Tue Dec 31 20:19:33 2013
--
Arr1() = {7,9,1,3,2}
sub fun(ByVal ArrX)
Array.Sort(ArrX)
end sub
然後執行fun(Arr1)
跑完之後Arr1值居然也跟著被排序了
call by value不是不會修改到function外部的參數嗎?
希望有大大可以幫忙解惑orz
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.224.46.164
※ 編輯: r30307 來自: 36.227.111.87 (01/02 21:19)
1F:推 a926:陣列型別是從抽象基底型別 Array 衍生的參考型別 01/03 08:48
2F:→ a926:你把Arr1傳進來改個名叫ArrX然後再做排序 01/03 08:49
3F:→ a926:會改到Arr1是正常的 01/03 08:49
4F:→ a926:如果是實質型別就不會有你說的問題 01/03 08:49
5F:→ a926:問題應該是 01/03 08:51
6F:→ a926:參考型別變數的指派會複製物件的參考,但不會複製物件本身 01/03 08:51
7F:→ a926:可是你這程式沒有回傳值,這結果應該是你要的? 01/03 08:52
8F:→ r30307:感謝 其實sub裡面做了不少事只是沒有列出來 01/03 22:21
9F:→ r30307:原本只是想要幾個需要的值 但不希望弄亂原陣列的index 01/03 22:22
10F:→ r30307:現在唯一想到的解法就是另外弄個一樣的陣列做sort就是.. 01/03 22:24