我们知道,int是一个值类型,所以下面是有道理的制作价值型表现为引用类型由于缺乏更好的术语“链接”,两个变量指向相同的存储位置。使用表达式<Func<T>>
int x = 3;
var y = MagicUtilClass.linkVariable(() => x);
y.Value = 5;
Console.WriteLine(x) //says 5.
问题是:linkVariable的方法是怎么样的?它会是什么样的返回类型?
虽然,我题为出任制作值类型表现为引用类型,上述linkVariable方法适用于引用类型太..,即
Person x = new Person { Name = "Foo" };
var y = MagicUtilClass.linkVariable(() => x);
y.Value = new Person { Name = "Bar" };
Console.WriteLine(x.Name) //says Bar.
我不知道如何实现这在C#中(不允许使用不安全的代码)?
欣赏想法。谢谢。
似乎非常重复[这个问题](http:// stackoverflow。COM /问题/ 1962539 /使用性关闭到保跟踪的-A-变好主意,或者脏了帽子戏法)。 – GSerg 2010-09-06 19:39:14
@GSerg - 感谢您的链接,但这是另一回事。当然,改变和绑定在lambda中的变量的值会改变评估lambda的结果。我感兴趣的是在另一件事上捕获价值,以便当另一件事情被修改时,原来的变化,即当y被改变时,x被改变。 – 2010-09-06 20:08:13