我們知道,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