2011-04-12 6 views

Répondre

2

Que se passera-t test(false)? Cela corrompra la pile, car les signatures doivent correspondre.

13

Les paramètres facultatifs sont à utiliser sur le côté appelant - pas sur ce qui est effectivement comme une seule méthode interface mise en œuvre. Ainsi, par exemple, ce devrait compilation:

delegate void SimpleDelegate(bool x = true); 

static void Main() 
{ 
    SimpleDelegate x = Foo; 
    x(); // Will print "True" 
} 

static void Foo(bool y) 
{ 
    Console.WriteLine(y); 
} 
0

Essayez de cette façon:

static int f(bool a) 
{ 
    return 4; 
} 
0

Parce que les paramètres facultatifs ne changent pas la signature sous-jacente de la méthode, ce qui est important aux délégués.

Ce que votre code attend est le paramètre facultatif ne pas être dans la signature de méthode si vous ne l'utilisez pas - c'est incorrect.

Questions connexes