Maison >développement back-end >C++ >Les types génériques en C# peuvent-ils être convertis en types spécifiques ?

Les types génériques en C# peuvent-ils être convertis en types spécifiques ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-29 17:21:13583parcourir

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

Les types génériques peuvent-ils être convertis en types spécifiques ?

Dans une requête récente, un programmeur issu d'une formation C a demandé de l'aide pour convertir des types génériques en types spécifiques en C#. Le code fourni :

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

    return t;
}

la compilation a échoué, le compilateur se plaignant de l'incapacité de convertir de « T » en chaîne.

Comprendre le problème nécessite de reconnaître que, même s'il se trouve dans un if, le compilateur ne peut pas déduire que « T » est un type chaîne. Par conséquent, le casting échoue. Pour résoudre ce problème, il faut d'abord convertir « T » en « objet », car n'importe quel « T » peut être converti en « objet », puis convertir davantage de « objet » en le type spécifique souhaité, tel que « chaîne ». 🎜>

Le code corrigé :

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;
démontre la bonne approche.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn