[英]How can I change the property once that property has already been passed to a function in C#
我將MyAction
傳遞給TestMethod
后更改了MyAction
,當我調用t.Next(3)
時,我希望可以調用更改后的MyAction
方法,我不能將MyAction
作為 ref 或 out 傳遞,因為匿名 function 不支持 ref 或 out,反正有沒有可以存檔這個目的?
我知道我可以更改順序,首先將MyAction
設置為一個方法,然后調用t.TestMethod(MyAction)
,但現實世界的要求是我必須在調用t.TestMethod(MyAction)
后更改MyAction
class Program
{
static void Main(string[] args)
{
Test t = new Test();
t.TestMethod(MyAction);
MyAction = new Action(() => { Console.WriteLine(1); });
t.Next(3);
}
public static Action MyAction;
}
class Test
{
Subject<int> sub = new Subject<int>();
public void Next(int v)
{
sub.OnNext(v);
}
public void TestMethod(Action action)
{
Enumerable.Range(1, 2).ToObservable().Concat(sub).Subscribe(p =>
{
if (action != null) action();
});
}
}
您可以將Func<Action> actionProvider
作為參數傳遞,而不是傳遞Action action
,然后像這樣調度它:
actionProvider()();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.