2013-05-26 1 views
9

Viene visualizzato il seguente errore al momento della compilazione. Come posso risolvere senza dover ricorrere a diversi nomi di funzioneCome risolvere questo errore di chiamata ambigua

private double SomeMethodName(SomeClassType value) 
{   
    return 0.0; 
} 
private double SomeMethodName(ADifferentClassType value) 
{ 
    if (value == null) 
    { 
     return this.SomeMethodName(null); //<- error 
    } 
    return this.SomeMethodName(new SomeClassType()); 
} 

risposta

16

Il compilatore è confuso perché null partite entrambi i sovraccarichi. Si può lanciare esplicitamente null alla classe che è necessario lasciare che il compilatore a sapere quale delle due overload che si sta chiamando:

if (value == null) 
{ 
    return this.SomeMethodName((SomeClassType)null); 
}