0
我正在嘗試製作一個新的Timers類來幫助我學習c#。我如何讓一個函數的參數成爲一個函數?具有作爲參數的函數
我正在嘗試製作一個新的Timers類來幫助我學習c#。我如何讓一個函數的參數成爲一個函數?具有作爲參數的函數
這很簡單。只需使參數爲某種delegate
類型,如Action
或Func
。
void PassAnAction(Action action)
{
action(); // call the action
}
T PassAFunction<T>(Func<T> function)
{
return function();
}
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), ...)
我將如何使用通過一個動作?假設我想顯示一個Hello World消息框。 – Michael
@Michael:類似這樣的:'PassAnAction((()=> ShowMessageBox(「Hello world」))'。 (我不知道你用什麼來顯示消息框,但希望能給你一個想法。) – StriplingWarrior