为了账号安全,请及时绑定邮箱和手机立即绑定

交换参考资料的最佳方式是什么?

交换参考资料的最佳方式是什么?

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);

原因是没有refp1而且p2都是副本的引用。这并不是说它们是对象的副本,而是对该对象的引用的副本。

有关更多信息,请参阅ref 关键字的文档。


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

TA贡献1798条经验 获得超7个赞

这是因为在 C# 中,值和引用类型都是按值传递的,即传递副本。我们需要明确告诉我们需要通过引用传递它们的位置。

对于引用类型,传递引用的副本。因此,在您的方法内部交换它们不会影响调用方法外部的原始对象引用,因为调用方法外部的变量与方法内部的变量具有不同的引用副本,尽管它们都指向同一个对象并从它们中的任何一个都会影响对象。


查看完整回答
反对 回复 2022-07-10
  • 2 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信