我可以在对象中存储对变量的引用吗?[复制]

Can I store a reference to an variable in an object? [duplicate]

提问人:sbi 提问时间:3/29/2011 最后编辑:Communitysbi 更新时间:3/29/2011 访问量:2306

问:

这个问题在这里已经有答案了:
12年前关闭。

可能的重复:
在 C# 中存储对对象的引用

有没有办法将引用存储在类对象中?像这样:

public class X
{
  public X(ref int i)
  {
    _t = i;
  }

  public void f(int ii)
  {
    _i = ii;
  }

  private int ref _i;
}

// ...
int i = 0;
X x = new X(ref i);
x.f(42);
// i is now 42

在 C++ 中,我会使用指针或引用来执行此操作。

C# 参考

评论

0赞 Rafal Spacjer 3/29/2011
你能解释一下你想实现什么吗?
0赞 sbi 3/29/2011
@Rafa:我以为我做到了。我希望类对象引用存储在其他地方的对象,以便类成员函数造成的更改反映在这个外部对象中。
1赞 Brad Christie 3/29/2011
另见 .net - 存储对 C# 对象的引用
0赞 sbi 3/29/2011
@Brad:谢谢。我想这是那个的骗子。投票决定关闭。

答:

3赞 Cade Roux 3/29/2011 #1

可以使用非托管代码执行此操作,但没有托管代码方法可以引用值类型。您必须手动将其装箱到某种对象容器中,并对其进行引用。

评论

0赞 Cade Roux 3/29/2011
@sbi - 这不就是C++的用途吗?;-)严肃地说,我认为在大多数设计中,即使你从单个属性开始,最好有一个漂亮的胖对象引用来摆弄 - 它允许你在使用 setter 属性或任何需要的时候进行切换,此外,你可以将引用类的接口扩展到多个属性,而无需添加额外的“按引用”值。
0赞 sbi 3/29/2011
我一定会在 C# 中执行此操作。我很想改用 C++,相信我。(看看我问的问题和我在个人资料中给出的答案......
0赞 Cade Roux 3/29/2011
@sbi - 我知道,我是在开玩笑 - 我能提供的最好的东西是看看你是否可以稍微扩展你的设计范围,看看这个值类型的对象容器是否可以做其他事情,并利用你必须引用一个完整的对象这一事实。变量必须位于某个位置 - 因此持有它的实例可以实现一个接口来更新该属性。
0赞 sbi 3/29/2011
谢谢。我想我犯了旧的失败,即询问如何获得特定的解决方案,而不是询问如何解决我的问题。 这是我现在的实际问题。:(