Delegates提供這種機制。以C#3.0爲例,快速的方法是使用Func<TResult>
,其中TResult
是string
和lambda。然後
您的代碼將變爲:
protected void MyMethod(){
RunMethod(() => ParamMethod("World"));
}
protected void RunMethod(Func<string> method){
MessageBox.Show(method());
}
protected String ParamMethod(String sWho){
return "Hello " + sWho;
}
不過,如果你使用的是C#2.0中,你可以使用匿名委託來代替:
// Declare a delegate for the method we're passing.
delegate string MyDelegateType();
protected void MyMethod(){
RunMethod(delegate
{
return ParamMethod("World");
});
}
protected void RunMethod(MyDelegateType method){
MessageBox.Show(method());
}
protected String ParamMethod(String sWho){
return "Hello " + sWho;
}
這不會編譯。 RunMethod需要一個Func你傳遞給它Func –
2009-08-04 17:01:36