In C# è possibile passare un metodo a nullable Func?Func Nullable <T, TResult>
Né Func<A, bool>?
né Func?<A, bool>
funziona.
In C# è possibile passare un metodo a nullable Func?Func Nullable <T, TResult>
Né Func<A, bool>?
né Func?<A, bool>
funziona.
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
.
Un Func è un delegato che è un tipo di riferimento. Ciò significa che è già annullabile (puoi passare null a un metodo).
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
Non sta parlando del tipo di ritorno. – SLaks
@ bto.rdz: Eh? Javascript non ha affatto l'applicazione del tipo. – SLaks