[.NET] ByVal失效?

作者: r30307 (RPG)   2013-12-31 20:19:33
--
Arr1() = {7,9,1,3,2}
sub fun(ByVal ArrX)
Array.Sort(ArrX)
end sub
然後執行fun(Arr1)
跑完之後Arr1值居然也跟著被排序了
call by value不是不會修改到function外部的參數嗎?
希望有大大可以幫忙解惑orz
作者: a926 (Aaron)   2012-01-03 08:48:00
陣列型別是從抽象基底型別 Array 衍生的參考型別你把Arr1傳進來改個名叫ArrX然後再做排序會改到Arr1是正常的如果是實質型別就不會有你說的問題問題應該是參考型別變數的指派會複製物件的參考,但不會複製物件本身可是你這程式沒有回傳值,這結果應該是你要的?
作者: r30307 (RPG)   2012-01-03 22:21:00
感謝 其實sub裡面做了不少事只是沒有列出來原本只是想要幾個需要的值 但不希望弄亂原陣列的index現在唯一想到的解法就是另外弄個一樣的陣列做sort就是..

Links booklink

Contact Us: admin [ a t ] ucptt.com