我的问题缩小为简单的解释如下:
我有一个类需要使用一个可能会发生变化的数字(不改变它)。这个数字不一定来自另一个类,它可以是任何东西。
但我只想将它“交给”类一次,而不是不断地调用更新方法或必须创建一个包装器(从那以后,正如我所说,这应该适用于任何类型的数字并且必须包装一切都有点不切实际)。
这是一些代码,希望有帮助:
public class SimpleExample
{
int value;
public SimpleExample(int variableOfWhichINeedAReference)
{
//Of course this won't work, but I'll keep it simple.
value = variableOfWhichINeedAReference;
}
public void DisplayValue()
{
print(value);
}
}
public class RandomClass
{
int myValue = 10;
SimpleExample s = new SimpleExample(myValue);
public void WorkWithValue()
{
myValue++;
}
public void Display()
{
print(foo);
print(bar);
s.DisplayValue();
}
}
现在,问题似乎非常明显:如果我实例化一个 SimpleExample 并给它一个变量作为参数,它将获得它的值而不是对其的引用。
有没有一种足够简单的方法可以避免我创建包装器?谢谢。
制作一个非常简单的类:
class Ref<T>
{
public T Value;
public Ref<T>()
{
}
public Ref<T>(T value)
{
this.Value = value;
}
}
然后像这样使用它:
class A
{
Ref<int> x;
public A(Ref<int> x)
{
this.x = x;
}
public void Increment()
{
x.Value++;
}
}
...
Ref<int> x = new Ref<int>(7);
A a = new A(x);
a.Increment();
Debug.Assert(x.Value == 8);
请注意,Ref<T>
这里的类是对a的引用value- 不是对a的引用variable。如果您想要引用变量,请使用埃里克·利珀特的解决方案 https://stackoverflow.com/questions/2980463/how-do-i-assign-by-reference-to-a-class-field-in-c/2982037#2982037(正如菲利普所指出的)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)