Heim > Backend-Entwicklung > C++ > Wie kann ich den generischen Typ eines Objekts in C# genau testen?

Wie kann ich den generischen Typ eines Objekts in C# genau testen?

Mary-Kate Olsen
Freigeben: 2025-01-06 15:50:43
Original
171 Leute haben es durchsucht

How Can I Accurately Test the Generic Type of an Object in C#?

Testen des generischen Typs eines Objekts in C#

In C# ist es wichtig, den generischen Typ eines Objekts zu überprüfen, um sicherzustellen, dass es ordnungsgemäß ist Handhabung und Kompatibilität in Ihrem Code. Ein gängiger Ansatz besteht darin, die Methode GetType() zu verwenden, um den Typ eines Objekts abzurufen und ihn mit einer bekannten generischen Typdefinition zu vergleichen. Dieser Ansatz kann jedoch zu Fehlern führen, wenn versucht wird, den generischen Typ zu bestimmen.

Das Problem mit der Typäquivalenz

Der bereitgestellte Code:

public bool Test()
{
    List<int> list = new List<int>();
    return list.GetType() == typeof(List<>);
}
Nach dem Login kopieren

mag logisch erscheinen, wird aber immer false zurückgeben, da der Operator == die Typäquivalenz vergleicht. Der generische Typ List<> stellt eine generische Liste dar, die jeden Typ speichern kann, nicht nur Ganzzahlen. Daher ist der Typ von Liste spezifischer als Liste<>, was zu einem Ungleichheitsvergleich führt.

Lösungen zum Testen generischer Typen

Um genau zu testen, ob ein Objekt von einem generischen Typ ist, verwenden Sie Folgendes Ansätze:

Auf generische Instanz prüfen:

Um festzustellen, ob ein Objekt eine Instanz eines generischen Typs ist, verwenden Sie die Eigenschaft IsGenericType:

return list.GetType().IsGenericType;
Nach dem Login kopieren

Dies gibt true zurück, wenn list eine Instanz eines generischen Elements ist Klasse.

Auf bestimmten generischen Typ prüfen:

Um zu überprüfen, ob es sich bei einem Objekt um eine bestimmte generische Liste handelt (Liste<>), verwenden Sie die Methode GetGenericTypeDefinition():

return list.GetType().GetGenericTypeDefinition() == typeof(List<>);
Nach dem Login kopieren

Dies wird zurückgegeben wahr, wenn list eine Instanz von List<> ist, aber keine abgeleiteten Typen.

Bedenken Sie, dass diese Prüfungen eine genaue Typäquivalenz feststellen. Wenn ein Objekt eine Instanz eines abgeleiteten generischen Typs ist (z. B. List), stimmt es nicht mit der generischen Typdefinition (List<>) überein.

Das obige ist der detaillierte Inhalt vonWie kann ich den generischen Typ eines Objekts in C# genau testen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage