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

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

交換參考資料的最佳方式是什么?

交換參考資料的最佳方式是什么?

C#
慕萊塢森 2022-07-10 16:20:06
在 C# 中交換引用的最佳方式是什么?為什么我的靜態方法Exchange不起作用?但是 Main 中的代碼有效。class  Person{        public Person(int money)    {        Money = money;    }    public  int Money { get; set; }    public static void Exchange(Person p1, Person p2)    {        Person newPerson = p1;        p1 = p2;        p2 = newPerson;    }   public object Clone()    {        return new Person( Money);    }} class Program{         static void Main(string[] args)    {        Person p1 = new Person(100);        Person p2=new Person(200);        Person newPerson = p1;        p1 = p2;        p2 = newPerson;        Console.WriteLine(p1.Money);        Console.WriteLine(p2.Money);        Console.ReadKey();    }}
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

你需要ref關鍵字:

public static void Exchange(ref Person p1, ref Person p2)

如此稱呼:

Person.Exchange(ref person1, ref person2);

原因是沒有ref,p1而且p2都是副本的引用。這并不是說它們是對象的副本,而是對該對象的引用的副本。

有關更多信息,請參閱ref 關鍵字的文檔。


查看完整回答
反對 回復 2022-07-10
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

這是因為在 C# 中,值和引用類型都是按值傳遞的,即傳遞副本。我們需要明確告訴我們需要通過引用傳遞它們的位置。

對于引用類型,傳遞引用的副本。因此,在您的方法內部交換它們不會影響調用方法外部的原始對象引用,因為調用方法外部的變量與方法內部的變量具有不同的引用副本,盡管它們都指向同一個對象并從它們中的任何一個都會影響對象。


查看完整回答
反對 回復 2022-07-10
  • 2 回答
  • 0 關注
  • 93 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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