看板 C_Sharp 關於我們 聯絡資訊
private void btncbv_Click(object sender, EventArgs e) { int x = 5; lblcbv1.Text = string.Format("參數傳遞之前的值:{0}", x); callbyvalue(x); lblcbv2.Text = string.Format("參數傳遞之後的值:{0}", x); } private int callbyvalue(int y) { y += 1; return y; } 執行起來沒問題,但我想問的是     為何lblcbv2.text的值是5不是6。     可是我有rerutn回去阿?     但我如果把callbyvalue(x); 放到裡面,如下     lblcbv2.Text = string.Format("參數傳遞之後的值:{0}", callbyvalue(x));          這時候顯示的就是6了。           我知道可以用ref的方式, 但為什麼上面這個例子會是這樣? 剛學C#! 麻煩各位~謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.126.243 ※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1420867904.A.F2D.html ※ 編輯: Boom3 (60.248.126.243), 01/10/2015 13:32:39
BigLoser: 因為是call by value阿..所以是5 01/10 14:10
BigLoser: 我有一個x是5,我有一個y,我給予y跟x一樣的值也是5 01/10 14:11
BigLoser: 今天y變成6了,x當然還是5 01/10 14:12
BigLoser: ------------------------------------------ 01/10 14:12
BigLoser: 當你印出5的時候是因為,你印了x 01/10 14:13
BigLoser: 當你印出6的時候是因為,你印了y 01/10 14:13
ssccg: 你有return回去,你又沒assign給x 01/10 16:56
ssccg: return的意思是 callbyvalue(x) 這個expression值是return 01/10 16:57
ssccg: 的值,不會動到傳進去的參數x 01/10 16:57
ssccg: 你應該先搞清楚function、return是在做什麼 01/10 16:58
ssccg: 想想如果沒有x,你是用callbyvalue(5),那5會變成6? 01/10 17:00
andymai: 如果要探討"傳值/傳址"的話~應該要去官網看一下... 01/11 04:01
andymai: http://tinyurl.com/l2tkrhz 傳遞參數 01/11 04:02
Nowtreel: 若您x想變6 必須 x=callbyvalue(x); x才會是return的值 01/11 08:11
Boom3: 謝謝各位! 01/13 18:50