2011-09-06 89 views

回答

6

這很簡單。只需使參數爲某種delegate類型,如ActionFunc

void PassAnAction(Action action) 
{ 
    action(); // call the action 
} 

T PassAFunction<T>(Func<T> function) 
{ 
    return function(); 
} 
+0

我將如何使用通過一個動作?假設我想顯示一個Hello World消息框。 – Michael

+0

@Michael:類似這樣的:'PassAnAction((()=> ShowMessageBox(「Hello world」))'。 (我不知道你用什麼來顯示消息框,但希望能給你一個想法。) – StriplingWarrior

1
public class MyTimer { 
    private readonly Action _fireOnInterval; 

    public MyTimer(Action fireOnInterval, TimeSpan interval, ...) { 
     if (fireOnInterval == null) { 
      throw new ArgumentNullException("fireOnInterval"); 
     } 
     _fireOnInterval = fireOnInterval; 
    } 

    private void Fire() { 
     _fireOnInterval(); 
    } 
    ... 
} 

你可以這樣調用:

new MyTimer(() => MessageBox.Show("Elapsed"), TimeSpan.FromMinutes(5), ...)