Ho un comportamento del metodo generico che dipende da T è il tipo di riferimento o il tipo di valore. Sembra così:Come determinare se T è un tipo di valore o una classe di riferimento in generale?
T SomeGenericMethod <T> (T obj)
{
if (T is class) //What condition I must write in the brackets?
//to do one stuff
else //if T is a value type like struct, int, enum and etc.
//to do another stuff
}
Non posso duplicare questo metodo come:
T SomeGenericMethod <T> (T obj) where T : class
{
//Do one stuff
}
T SomeGenericMethod <T> (T obj) where T : struct
{
//Do another stuff
}
perché le loro firme sono uguali. Qualcuno può aiutarmi?
Grazie per la spiegazione aggiuntiva sui tipi di valori nullable. – mkus
La seconda opzione è un possibile confronto di un tipo di valore con null, che è qualcosa su cui ReSharper piace abbaiare. C'è un modo per aggirare questo? – bubbleking
@bubbleking: dipende da cosa stai cercando di ottenere, davvero ... –