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;
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!