estoy tratando de convertir el valor del valor t parámetro de tipo genérico en número entero después de asegurarse de que T es, de hecho entero:¿Cómo convertir el valor del argumento de tipo genérico a 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
}
}
}
pesar de que funciona a través del boxeo y unboxing, se trata de una sobrecarga de rendimiento adicional y Estaba vagando si hay una manera de hacerlo directamente.
Entonces, permítanme entender esto ... Están construyendo un método que es genérico, pero necesita saber si el parámetro tipo es un int? Tu diseño, hay algo mal con eso. – Will
Cualquier razón para no agregar una sobrecarga 'void DoSomething (int value) {}'? –
Este es un ejemplo simplificado. El código real tiene muchas cosas antes y después de la conversión que se benefician de los genéricos –