Der Wert des Typs 'T' kann nicht in konvertiert werden

Dies ist wahrscheinlich eine eine Anfänger Frage, aber google überraschenderweise nicht beantworten.

Habe ich diese sehr künstliche Methode

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

        return t;
    }

Kommen aus einem C++ - hintergrund habe ich erwartet, dass dies funktioniert. Jedoch nicht zu kompilieren mit "kann Nicht implizit konvertiert Typ" T "string" und "Cannot convert type 'T' , string" für beide der oben genannten Aufgaben.

Bin ich entweder etwas konzeptionell falsch oder hast einfach die falsche syntax. Bitte helfen Sie mir Sortieren.

Danke!

Kommentar zu dem Problem
IMO, wenn Sie die überprüfung in Ihrem Generika-code, dann Generika wahrscheinlich nicht die richtige Lösung für Ihr problem. Kommentarautor: Austin Salonen
Der Ausdruck typeof(T) == typeof(string) ist behoben, zur Laufzeit, nicht zur Kompilierzeit. So ist die folgende Zeile in dem block ist ungültig. Kommentarautor: Steve Guidi
(T)Konvertieren.ChangeType(newT1, typeof(T)) Kommentarautor: vsapiha
@vsapiha, funktioniert Nur, wenn das Objekt IConvertible implementieren. Süße, wenn es nicht, obwohl. Kommentarautor: ouflak

InformationsquelleAutor der Frage Alex | 2010-11-03

Schreibe einen Kommentar