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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c#奇怪的問題。高手進

c#奇怪的問題。高手進

LEATH 2018-12-07 04:01:47
為什么執行完set方法后.list還是為null ?public partial class Form1 : Form??? {??????? public Form1()??????? {??????????? InitializeComponent();??????? }??????? List list = null;??????? private void button1_Click(object sender, EventArgs e)??????? {??????????? set(list);??????? }??????? private void set(List l)??????? {??????????? l = new List();??????? }??? }
查看完整描述

9 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

這是一定的 , set 只是創建 I
查看完整回答
反對 回復 2018-12-09
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

list = l=null 然后set 后 l 指向了其他的內存 list 還是老樣子 null
查看完整回答
反對 回復 2018-12-09
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

你沒 out或ref 。。
查看完整回答
反對 回復 2018-12-09
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

增加 out 或 ref 吧
查看完整回答
反對 回復 2018-12-09
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

上面的各位都是對的。 稍微補充一下:在C#里,方法的參數有引用傳和值傳兩種。只有加了ref的才是引用傳。值傳時方法內部使用參數的副本,引用傳世使用參數的引用。在你的代碼里,set()方法的參數實際上傳了list 變量的值,即指向null的內存地址(可以這樣理解,實際上是一個包裝過的指針),set()方法內部,l的值是null的內存地址,但l和之前的list是不同的。對l的操作不會影響list,但是由于l和list指向的地址是同一個,對l指向的地址的操作,同樣會對list起作用。 ?
查看完整回答
反對 回復 2018-12-09
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

@彬彬@科比:? 實際上,還有一個out,但是和ref不一樣。帶out的參數可以沒有初值,其他和ref一樣。 對于引用傳和值傳兩個概念,實際上就是看方法接到的參數是對象本身還是對象的副本。
查看完整回答
反對 回復 2018-12-09
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

增加 out 或 ref?
查看完整回答
反對 回復 2018-12-09
  • 9 回答
  • 0 關注
  • 398 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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