PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_Sharp
[問題] 傳值/址呼叫的問題
作者:
Boom3
(boom3)
2015-01-10 13:31:41
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#! 麻煩各位~謝謝
作者:
BigLoser
(大魯蛇)
2015-01-10 14:10:00
因為是call by value阿..所以是5我有一個x是5,我有一個y,我給予y跟x一樣的值也是5今天y變成6了,x當然還是5------------------------------------------當你印出5的時候是因為,你印了x當你印出6的時候是因為,你印了y
作者:
ssccg
(23)
2015-01-10 16:56:00
你有return回去,你又沒assign給xreturn的意思是 callbyvalue(x) 這個expression值是return的值,不會動到傳進去的參數x你應該先搞清楚function、return是在做什麼想想如果沒有x,你是用callbyvalue(5),那5會變成6?
作者:
andymai
(人生只有一次)
2015-01-11 04:01:00
如果要探討"傳值/傳址"的話~應該要去官網看一下...
http://tinyurl.com/l2tkrhz
傳遞參數
作者:
Nowtreel
(盜版陳金城)
2015-01-11 08:11:00
若您x想變6 必須 x=callbyvalue(x); x才會是return的值
作者:
Boom3
(boom3)
2015-01-13 18:50:00
謝謝各位!
繼續閱讀
[問題] C#程式在別台電腦執行
walter0914
[問題] 再次請教版上前輩
prettywendy
[問題] Kinect2 的開發
srxrrr
Re: [問題] ?: 運算子的問題
VVll
[問題] ?: 運算子的問題
apologize
[問題] RequiredFieldValidator 問題
kisha024
集合取亂數後刪值
linbanana
Re: [問題] 新手學C#,有關{get;set;}的疑問
AmosYang
[問題] ASP .Net可以做到顯示行號嗎?
don750421
Re: 請問有c#的高手嗎?
linbanana
Links
booklink
Contact Us: admin [ a t ] ucptt.com