2015-12-25 55 views
-4

所以我知道該怎麼做:傳遞的方法與參數的參數

void PrintFoo() { Console.Write("Foo");} 
void DoSomething (Action methodToCall) { methodToCall();} 
void Main() { DoSomething(PrintFoo); } 

我想要做什麼:

void PrintFoo (string fooToPrint) { Console.Write(fooToPrint);} 
void DoSomething (Action methodToCall) { methodToCall();} 
void Main() { DoSomething(PrintFoo("Foo bar baz")); } 

基本上調用帶參數

回答

4

使用的動作拉姆達表達:

void PrintSomething(string stringToPrint) { Console.Write(stringToPrint); } 
void DoSomething(Action methodToCall) { methodToCall(); } 

void Main() 
{ 
    DoSomething(() => PrintSomething("Message")); 
} 
+2

感謝您對代碼進行消毒。 :) – sstan

0

您也可以定義操作來要求回調的參數類型。

public void DoSomething(Action<string> Callback){ 
    var result = getMyString(); 
    Callback(result); 
} 

public void DoSomething(Action<string> CallBack, List<string> Parms){ 
    var sb = new StringBuilder();   
    Parms.ForEach(p=> sb.Append(Parse(p)); 
    Callback(sb.ToString()); 
}