2012-05-15 11 views

risposta

17

Questo non ha senso.
Tutti i tipi di riferimento, incluso Func<...>, possono già essere null.

I tipi non cumulabili si applicano ai tipi di valore (struct s), che in genere non possono essere null.

+0

@ bto.rdz: Eh? Javascript non ha affatto l'applicazione del tipo. – SLaks

3

Un Func è un delegato che è un tipo di riferimento. Ciò significa che è già annullabile (puoi passare null a un metodo).

1

Func -> Incapsula un metodo che restituisce un tipo specificato dal parametro generico

Se tipo restituito è vuoto, c'è un delegato diversa (Azione)

Action -> Incapsula un metodo che non restituisce un valore.

Se si richiede Func per accettare parametri che possono accettare null (tipo nullable), o richiedere Func per restituire valore che può essere nullo (tipo nullable), non vi è alcuna restrizione.

Per esempio.

Func<int?, int?, bool> intcomparer = 
    (a,b)=> 
    { 
    if(a.HasValue &&b.HasValue &&a==b) 
     return true; 
     return false; 
    } ; 

    Func<int?, int?, bool?> nullintcomparer = 
    (a,b)=> 
    { 

    if(a.HasValue &&b.HasValue &&a==b) 
     return true; 
    if(!a.HasValue || !b.HasValue) 
     return null; 
     return false; 
    } ; 

    var result1 = intcomparer(null,null); //FALSE 
    var result2 = intcomparer(1,null); // FALSE 
    var result3 = intcomparer(2,2); //TRUE 


    var result4 = nullintcomparer(null,null); // null 
    var result5 = nullintcomparer(1,null); // null 
    var result6 = nullintcomparer(2,2); //TRUE 
+1

Non sta parlando del tipo di ritorno. – SLaks

Problemi correlati