Sto cercando di convertire il valore del valore di T parametro di tipo generico in integer dopo essersi assicurati che T è in realtà intero:Come convertire il valore di Argomento di tipo generico in un tipo concreto?
public class Test
{
void DoSomething<T>(T value)
{
var type = typeof(T);
if (type == typeof(int))
{
int x = (int)value; // Error 167 Cannot convert type 'T' to 'int'
int y = (int)(object)value; // works though boxing and unboxing
}
}
}
Anche se funziona attraverso la boxe e unboxing, si tratta di un sovraccarico delle prestazioni aggiuntive e Stavo vagando se c'è un modo per farlo direttamente.
Quindi, fammi capire questo ... Stai costruendo un metodo che è generico, ma ha bisogno di sapere se il parametro type è un int? Il tuo design, c'è qualcosa di sbagliato in questo. – Will
Qualsiasi motivo per non aggiungere un overload 'void DoSomething (valore int) {}'? –
Questo è un esempio semplificato. Il codice effettivo ha un sacco di cose prima e dopo la conversione che beneficiano di generici –