Heim >Backend-Entwicklung >C++ >Können generische Typen in C# in bestimmte Typen umgewandelt werden?
Können generische Typen in bestimmte Typen umgewandelt werden?
In einer aktuellen Anfrage suchte ein Programmierer mit C-Hintergrund nach Unterstützung bei der Umwandlung generischer Typen in bestimmte Typen in C#. Der bereitgestellte Code:
T HowToCast<T>(T t) { if (typeof(T) == typeof(string)) { T newT1 = "some text"; T newT2 = (string)t; } return t; }
konnte nicht kompiliert werden, da sich der Compiler darüber beschwerte, dass die Konvertierung von „T“ in einen String nicht möglich sei.
Um das Problem zu verstehen, muss man sich darüber im Klaren sein, dass es innerhalb eines liegt if-Anweisung kann der Compiler nicht ableiten, dass „T“ ein String-Typ ist. Folglich schlägt das Casting fehl. Um dies zu beheben, muss man zunächst „T“ in „Objekt“ umwandeln, da jedes „T“ in „Objekt“ umgewandelt werden kann, und dann weiter von „Objekt“ in den gewünschten spezifischen Typ, z. B. „Zeichenfolge“, umwandeln.
Der korrigierte Code:
T newT1 = (T)(object)"some text"; string newT2 = (string)(object)t;
demonstriert die richtige Vorgehensweise.
Das obige ist der detaillierte Inhalt vonKönnen generische Typen in C# in bestimmte Typen umgewandelt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!