2016-04-20 35 views
-1

我想打電話給Method2,然後Method1。我知道有這樣做有多種方式Method1(Method2());
但我只是嘗試了下面的代碼。 在下面的場景中Method2沒有被調用。所以我只是想知道這個場景在哪裏有用,爲什麼C#提供了這種機制。如何在C#中調用一個接一個的方法?

public delegate void Action(); 
public static void Method1(Action action) 
{ 

} 

static void Main() 
{ 
    Method1(Method2); 
    return; 
} 

public static void Method2() 
{ 

} 
+3

方法二不叫,因爲你沒有在方法一 – ASh

+1

調用'action'順便說一句,你不需額外需要自己爲'委託Action',它自帶.NET 3.5 – HimBromBeere

回答

1

你應該調用actionMethod1

... 
public static void Method1(Action action) 
{ 
    // do not forget to validate input for public methods 
    if (null == action) 
     throw new ArgumentNullException("action"); 

    action(); // you should invoke action 
} 
+0

那麼爲什麼我需要paas Action作爲Method1中的參數,我可以直接調用方法1中的Method2 – Vivek

+0

@Vivek:當然,你可以直接調用Method2;我剛更正了你的代碼。你可能想要傳遞一個* lambda *作爲一個動作。例如' ()=> a == b? Method2():Method3()' –

相關問題