2016-04-20 4 views
-1

Ich möchte Method2 anrufen und dann Method1. Ich weiß, es gibt mehrere Möglichkeiten, dies zu tun, wie Method1(Method2());
Aber ich habe gerade den folgenden Code ausprobiert. Im folgenden Szenario wird Method2 nicht aufgerufen. Ich bin nur neugierig zu wissen, wo dieses Szenario nützlich ist, warum C# diesen Mechanismus bereitgestellt hat.Wie ruft man in C# eine Methode nach der anderen auf?

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

} 

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

public static void Method2() 
{ 

} 
+3

Method2 nicht, weil Sie eine nicht aufrufen genannt 'action' in Method1 – ASh

+1

Wie beiseite Sie benötigen für Ihre eigenen Delegierten won't' Aktion, kommt es mit .NET 3.5 – HimBromBeere

Antwort

1

Sie sollten aufrufenaction innerhalb Method1:

... 
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

Dann warum muss ich Action als Parameter in Method1 paas, ich kann Method2 in Method1 direkt aufrufen – Vivek

+0

@Vivek: sicher, Sie können Method2 direkt aufrufen; Ich habe gerade Ihren Code korrigiert. Vielleicht möchten Sie ein * Lambda * als Aktion übergeben. z.() => a == b? Methode2(): Methode3() ' –

Verwandte Themen