c# – 如何保存ref变量供以后使用?

c# – 如何保存ref变量供以后使用?,第1张

概述所以这样做 public MyClass(ref Apple apple){ apple = new Apple("Macintosh"); // Works fine} 但是有可能做这样的事情吗? private Apple myApple;public MyClass(ref Apple apple){ myApple = apple;}public void 所以这样做
public MyClass(ref Apple apple){    apple = new Apple("Macintosh"); // Works fine}

但是有可能做这样的事情吗?

private Apple myApple;public MyClass(ref Apple apple){    myApple = apple;}public voID ModifyApple(){    myApple = new Apple("Macintosh"); // does not change the input variable like the first example dID}

当ref变量复制到成员变量myApple时,它似乎失去了’ref-ness’,并重新分配它不再改变输入变量.有没有解决的办法?

解决方法 不是真的,不行在您的代码下次调用时,用作方法参数的原始变量可能不再存在:
voID Foo(){    MyClass x = bar();    x.ModifyApple();}MyClass bar(){    Apple apple = new Apple();    return new MyClass(ref apple);}

在这里,apple是一个局部变量,在一个堆栈框架中,我们调用ModifyApple时,它将被d出.

您确定需要修改原始调用者的变量,而不是仅仅更改对象本身?

一种排序假的方法是使用包装器类型来开始:

public class MutableWrapper<T>{    public T Value { get; set; }}

然后传入一个MutableWrapper< Apple>,并将其存储在你的类中.然后在ModifyApple你可以写:

wrapper.Value = new Apple();

这不会改变调用者的变量,但是下一次调用者查看Value属性时,他们会看到你的新的apple.

说实话,这种事情往往会导致难以维护的代码,甚至引用对于可读性来说也不是很好.如果您可以解释您想要实现的更大的图景,那么我们可能会提出一个更好的整体方法.

总结

以上是内存溢出为你收集整理的c# – 如何保存ref变量供以后使用?全部内容,希望文章能够帮你解决c# – 如何保存ref变量供以后使用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1259749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存