我能在对象中存储一个变量的引用吗?

4

可能是重复问题:
在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++中,我会使用指针或引用来完成这个操作。

你能解释一下你想要实现什么吗? - Rafal Spacjer
@Rafał:我以为我做了。我想要一个类对象引用在其他地方存储的对象,这样类成员函数所造成的更改就会反映在这个外部对象中。 - sbi
1
请参阅 .net - 在C#中存储对象的引用 - Brad Christie
@Brad:谢谢。我猜这是那个的重复了。投票关闭。 - sbi
1个回答

3

你可以使用非托管代码实现,但是没有托管代码的方式可以引用值类型。你需要手动将其装箱到某种对象容器中并引用它。


@sbi - 这不是 C++ 的用途吗?;-) 说真的,在大多数设计中,即使你最初只有一个属性,拥有一个漂亮的大对象引用也更好——这样可以在需要时使用 setter 属性或其他东西进行操作,而且你可以扩展所引用类的接口以包含多个属性,而无需添加额外的“按引用传递”的值。 - Cade Roux
我必须用C#来完成这个任务。相信我,我更喜欢用C++。(只需看看我在个人资料中提出的问题和给出的答案就知道了...) - sbi
@sbi - 我知道,我只是开个玩笑而已 - 我能提供的最好建议就是看看你能否扩大设计范围,看看这个值类型的对象容器是否还有其他功能可以利用,并且利用你必须拥有对完整对象的引用这一事实。变量必须存在于某个地方 - 因此持有它的实例可以实现一个接口,仅更新那个属性。 - Cade Roux
谢谢。我觉得我犯了一个老错误,就是询问如何让特定解决方案运作,而不是询问如何解决我的问题。:( 这是我现在的实际问题链接 - sbi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接