Valeur de type 'T' ne peut pas être converti à

C'est probablement une question de novice, mais google étonnamment n'a pas répondu.

J'ai plutôt artificielle méthode

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

    return t;
}

À venir à partir d'un C++ fond, j'ai attendu à ce travail. Cependant, il ne parvient pas à compiler avec "Impossible de convertir implicitement le type" T "à la chaîne" et "Ne peut pas convertir de type" T "à la chaîne" pour les deux missions.

Je suis soit faire quelque chose de conceptuellement mal ou tout simplement avoir la mauvaise syntaxe. Merci de m'aider à trier ce coup.

Merci!

  • IMO, si vous êtes à la vérification de types dans votre génériques de code, puis les génériques ne sont probablement pas la bonne solution à votre problème.
  • L'expression typeof(T) == typeof(string) est résolu au moment de l'exécution, et non pas au moment de la compilation. Donc la ligne suivante dans le bloc n'est pas valide.
  • (T)Convertir.ChangeType(newT1, typeof(T))
  • Ne fonctionne que si l'objet à mettre en œuvre IConvertible. Douceur si il le fait bien.
InformationsquelleAutor Alex | 2010-11-03