作者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