簡體   English   中英

一旦該屬性已傳遞給 C# 中的 function,我該如何更改該屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM