[.NET] ByVal失效?

看板Visual_Basic作者 (RPG)時間11年前 (2013/12/31 20:19), 編輯推噓1(109)
留言10則, 2人參與, 最新討論串1/1
-- 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)

01/03 08:48, , 1F
陣列型別是從抽象基底型別 Array 衍生的參考型別
01/03 08:48, 1F

01/03 08:49, , 2F
你把Arr1傳進來改個名叫ArrX然後再做排序
01/03 08:49, 2F

01/03 08:49, , 3F
會改到Arr1是正常的
01/03 08:49, 3F

01/03 08:49, , 4F
如果是實質型別就不會有你說的問題
01/03 08:49, 4F

01/03 08:51, , 5F
問題應該是
01/03 08:51, 5F

01/03 08:51, , 6F
參考型別變數的指派會複製物件的參考,但不會複製物件本身
01/03 08:51, 6F

01/03 08:52, , 7F
可是你這程式沒有回傳值,這結果應該是你要的?
01/03 08:52, 7F

01/03 22:21, , 8F
感謝 其實sub裡面做了不少事只是沒有列出來
01/03 22:21, 8F

01/03 22:22, , 9F
原本只是想要幾個需要的值 但不希望弄亂原陣列的index
01/03 22:22, 9F

01/03 22:24, , 10F
現在唯一想到的解法就是另外弄個一樣的陣列做sort就是..
01/03 22:24, 10F
文章代碼(AID): #1ImhPP7S (Visual_Basic)
文章代碼(AID): #1ImhPP7S (Visual_Basic)