如何捕獲變量?
或者,我可以存儲對象引用的引用嗎?如何捕獲變量(C#)
通常情況下,一種方法可以使用ref
關鍵字來改變它之外的變量。
void Foo(ref int x)
{
x = 5;
}
void Bar()
{
int m = 0;
Foo(ref m);
}
這是清楚而直截了當的。
現在讓我們考慮一個類來實現同樣的事情:
class Job
{
// ref int _VarOutsideOfClass; // ?????
public void Execute()
{
// _VarOutsideOfClass = 5; // ?????
}
}
void Bar()
{
int m = 0;
var job = new Job()
{
_VarOutsideOfClass = ref m // How ?
};
job.Execute();
}
如何正確地寫呢?
點評:我不能使它與ref
參數的方法,因爲通常Execute()
會在不同的線程有點遲叫,當它在隊列中出現。
目前,我做了充足的lambda表達式的原型:
class Job
{
public Func<int> InParameter;
public Action<int> OnResult;
public void Execute()
{
int x = InParameter();
OnResult(5);
}
}
void Bar()
{
int m = 0;
var job = new Job()
{
InParameter =() => m,
OnResult = (res) => m = res
};
job.Execute();
}
...但也許有一個更好的主意。
您的解決方案對我來說似乎很不錯... – 2009-08-17 13:38:58