Es probable que se trate de una pregunta de principiante, pero sorprendentemente, Google no proporcionó una respuesta.El valor del tipo 'T' no se puede convertir a
que tienen este método bastante artificial
T HowToCast<T>(T t)
{
if (typeof(T) == typeof(string))
{
T newT1 = "some text";
T newT2 = (string)t;
}
return t;
}
Viniendo de experiencia en C++ He esperado esto funcione. Sin embargo, no compila con "No se puede convertir implícitamente el tipo 'T' a la cadena" y "No se puede convertir el tipo 'T' a la cadena" para las dos asignaciones anteriores.
Estoy haciendo algo conceptualmente incorrecto o simplemente tengo una sintaxis incorrecta. Por favor, ayúdame a resolverlo.
¡Gracias!
OMI, si usted está comprobando tipos genéricos en el código, a continuación, los genéricos, probablemente no son la solución correcta a su problema. –
La expresión 'typeof (T) == typeof (string)' se resuelve en tiempo de ejecución, no en tiempo de compilación. Por lo tanto, la siguiente línea en el bloque no es válida. –
(T) Convertir.ChangeType (newT1, typeof (T)) – vsapiha