Maison > développement back-end > C++ > Comment convertir en toute sécurité un type générique « T » en chaîne en C# ?

Comment convertir en toute sécurité un type générique « T » en chaîne en C# ?

DDD
Libérer: 2024-12-29 02:59:14
original
345 Les gens l'ont consulté

How to Safely Cast a Generic Type 'T' to a String in C#?

Conversion des types génériques en C#

La question suivante se pose fréquemment parmi les développeurs : "Erreur : la valeur de type 'T' ne peut pas être convertie en 'chaîne'." Ce problème survient lorsque vous tentez de convertir un type générique « T » en un type concret spécifique.

Considérez la méthode suivante :

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

    return t;
}
Copier après la connexion

Bien qu'il provienne d'un arrière-plan C, ce code ne parvient pas à compiler. Le compilateur renvoie des erreurs telles que « Impossible de convertir implicitement le type « T » en chaîne » et « Impossible de convertir le type « T » en chaîne. »

Comprendre le problème

Le problème clé ici est que le compilateur ne peut pas déterminer le type spécifique de « T ». Même s'il se trouve dans un bloc if qui vérifie si 'T' est une chaîne, le compilateur ne dispose pas de cette information au moment de la compilation.

Solution

Pour résoudre Pour résoudre ce problème, nous devons effectuer une conversion intermédiaire en « objet ». Puisque n'importe quel type générique peut être converti en « objet », nous pouvons ensuite convertir « objet » en le type concret souhaité, dans ce cas, une chaîne.

Voici le code corrigé :

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;
Copier après la connexion

En effectuant un casting intermédiaire en « objet », nous spécifions explicitement les conversions et garantissons que le compilateur peut effectuer les opérations correctement.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal