"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Pueden los tipos genéricos en C# ser emitidos a tipos específicos?

¿Pueden los tipos genéricos en C# ser emitidos a tipos específicos?

Publicado el 2025-03-22
Navegar:869

Can Generic Types in C# Be Cast to Specific Types?

¿Se pueden lanzar los tipos genéricos a tipos específicos?

en una consulta reciente, un programador de un fondo C buscó asistencia con tipos genéricos a tipos específicos en C#. El código proporcionado:

T HowToCast(T t)
{
    if (typeof(T) == typeof(string))
    {
        T newT1 = "some text";
        T newT2 = (string)t;
    }

    return t;
}

no se pudo compilar, con el compilador que se queja de la incapacidad de convertir de 't' a string.

comprender el problema requiere reconocer que, a pesar de estar dentro de una instrucción IF, el compilador no puede inferir que 't' es un tipo de cadena. En consecuencia, el casting falla. Para abordar esto, uno debe lanzar 't' a 'objeto' primero, ya que cualquier 't' puede ser arrojado a 'objeto', y luego emitir de 'objeto' al tipo específico deseado, como 'string'.

el código corregido:

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;

demuestra el enfoque correcto.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3