Heim > Backend-Entwicklung > C++ > Wie kann man in C# einen generischen Typ „T' sicher in einen String umwandeln?

Wie kann man in C# einen generischen Typ „T' sicher in einen String umwandeln?

DDD
Freigeben: 2024-12-29 02:59:14
Original
345 Leute haben es durchsucht

How to Safely Cast a Generic Type 'T' to a String in C#?

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;
}
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage