Generische Typen in C# konvertieren
Unter Entwicklern taucht häufig die Frage auf: „Fehler: Der Wert des Typs ‚T‘ kann nicht in konvertiert werden.“ 'Zeichenfolge'." Dieses Problem tritt auf, wenn versucht wird, einen generischen Typ „T“ in einen bestimmten konkreten Typ umzuwandeln.
Betrachten Sie die folgende Methode:
T HowToCast<T>(T t) { if (typeof(T) == typeof(string)) { T newT1 = "some text"; T newT2 = (string)t; } return t; }
Obwohl dieser Code einen C-Hintergrund hat, schlägt dies fehl kompilieren. Der Compiler gibt Fehler wie „Typ ‚T‘ kann nicht implizit in String konvertiert werden“ und „Typ ‚T‘ kann nicht in String konvertiert werden“ aus.
Verstehen des Problems
Das Hauptproblem hierbei ist, dass der Compiler den spezifischen Typ von „T“ nicht bestimmen kann. Obwohl es sich innerhalb eines if-Blocks befindet, der prüft, ob „T“ eine Zeichenfolge ist, verfügt der Compiler zur Kompilierungszeit nicht über diese Informationen.
Lösung
Auflösen Um dieses Problem zu lösen, müssen wir eine Zwischenumwandlung in „Objekt“ durchführen. Da jeder generische Typ in „Objekt“ umgewandelt werden kann, können wir dann von „Objekt“ in den gewünschten konkreten Typ, in diesem Fall String, umgewandelt werden.
Hier ist der korrigierte Code:
T newT1 = (T)(object)"some text"; string newT2 = (string)(object)t;
Durch die Durchführung einer Zwischenumwandlung in „Objekt“ geben wir die Konvertierungen explizit an und stellen sicher, dass der Compiler die Operationen korrekt ausführen kann.
Das obige ist der detaillierte Inhalt vonWie kann man in C# einen generischen Typ „T' sicher in einen String umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!