亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么運行結果是4歲,5歲,4歲????

? ? ? ? ? ? Child child = new Child("劉小明", 3, Gender.女);

? ? ? ? ? ? int age = 3;

? ? ? ? ? ? Growth(child);//直接調用靜態方法,類是引用類型,修改形參,實參child也被修改

? ? ? ? ? ? Growth(child.Age);//int是值類型,修改形參,實參未改變-----》??????但是為什么運行結果和視頻中的不一樣,我的改變了

? ? ? ? ? ? //Growth(ref age);

? ? ? ? }

? ? ? ? static void Growth(Child c)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? c.Age++;

? ? ? ? ? ? ? ? Console.WriteLine("我是A方法,我今年{0}歲了",c.Age);

? ? ? ? ? ? }

? ? ? ? ? static void Growth(int age)

? ? ? ? ? ? {

? ? ? ? ? ? ? ?age++;

? ? ? ? ? ? ? ? Console.WriteLine("我是B方法,我今年{0}歲了", age);

? ? ? ? ? ? }

? ? ? ? static void Growth(ref int age)//???為什么跟視頻中的相反,ref不是能使值類型按照引用類型傳參,為什么顛倒了

? ? ? ? {

? ? ? ? ? ? age++;

? ? ? ? ? ? Console.WriteLine("我是C方法,我今年{0}歲了", age);

? ? ? ? }


正在回答

3 回答

題主好像對方法理解有點錯誤啊,第二步,你的輸出語句在方法里面,當你傳的值是4,++之后肯定會變成5,這個時候輸出肯定是5啦

視頻的輸出都是寫在方法調用之后,而不是方法體里面

0 回復 有任何疑惑可以回復我~

代碼第二步?Growth(child.Age);視頻中一樣的方法輸出卻是4歲,說傳入的int類型是值類型,也就是復制副本,實際參數并未改變。

0 回復 有任何疑惑可以回復我~

代碼第一步?Growth(child); 此時child.Age為new Child("劉小明", 3, Gender.女);中所賦值的3。在static void Growth(Child c)中運行? ??c.Age++;為4歲。

代碼第二步?Growth(child.Age); 此時傳遞為第一步中運行后的結果4? 所以傳入方法中的參數就是4。在?static void Growth(int age) 中運行?age++; 為5。

代碼第三步 Growth(ref age);傳遞的值 為?int age = 3;? 因此?static void Growth(ref int age)中??age++;結果為4。

0 回復 有任何疑惑可以回復我~
#1

慕俠2341482 提問者

代碼第二步 Growth(child.Age);視頻中一樣的方法輸出卻是4歲,說傳入的int類型是值類型,也就是復制副本,實際參數并未改變。
2019-01-05 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么運行結果是4歲,5歲,4歲????

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號