2016-04-20 3 views
-1

Я хочу позвонить Method2, а затем Method1. Я знаю, что есть несколько способов сделать это, как Method1(Method2());
Но я просто попробовал приведенный ниже код. В приведенном ниже сценарии Method2 не набирается. Поэтому мне просто интересно узнать, где этот сценарий полезен, почему C# предоставил этот механизм.Как вызвать один метод за другим в C#?

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

} 

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

public static void Method2() 
{ 

} 
+3

Method2 не вызывается, потому что вы не вызвать 'action' в method1 – ASh

+1

Как в стороне вы won't нужен собственный делегат для' Action', он поставляется с .NET 3.5 – HimBromBeere

ответ

1

Вы должны вызватьaction в 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

Тогда зачем мне нужно paas Action как параметр в Method1, я могу напрямую вызвать Method2 в Method1 – Vivek

+0

@Vivek: уверен, вы можете вызвать Method2 напрямую; Я только что скорректировал ваш код. Возможно, вы захотите передать * лямбда * в качестве действия. 'Например,() => a == b? Method2(): Method3() ' –

Смежные вопросы