Les types génériques peuvent-ils être jetés à des types spécifiques?
Dans une requête récente, un programmeur d'un fond C a demandé une assistance pour couler des types génériques à des types spécifiques en C #. Le code fourni:
T HowToCast(T t) { if (typeof(T) == typeof(string)) { T newT1 = "some text"; T newT2 = (string)t; } return t; }
Échec de la compilation, le compilateur se plaignant de l'incapacité de se convertir de 'T' en chaîne.
Comprendre le problème nécessite de reconnaître que, bien qu'il soit dans une instruction IF, le compilateur ne peut pas déduire que 'T' est un type de chaîne. Par conséquent, le casting échoue. Pour résoudre ce problème, il faut d'abord lancer 't' to 'object', car n'importe quel 't' peut être jeté à 'objet', puis coulé de 'objet' au type spécifique souhaité, tel que 'String'.
le code corrigé:
T newT1 = (T)(object)"some text"; string newT2 = (string)(object)t;
démontre la bonne approche.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3