Heim >Backend-Entwicklung >C++ >Können generische Typen in C# in bestimmte Typen umgewandelt werden?

Können generische Typen in C# in bestimmte Typen umgewandelt werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-29 17:21:13547Durchsuche

Can Generic Types in C# Be Cast to Specific Types?

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!

Stellungnahme:
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