Verwendung Datentypen und Typen von Objekten / GetType, Type

  • VB.NET
  • .NET 7–8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Verwendung Datentypen und Typen von Objekten / GetType, Type

    Hallo,

    ich brauche hier nochmal ein wenig Nachhilfe.

    Ich gehe doch wohl richtig in der Annahme, dass Integer oder IrgendeineKlasse ein Type ist.
    Dabei ist Type selbst eine Klasse.
    Die Object.Gettype(IrgendeineKlasse) Methode gibt mir eine Instanz von Type, welche dann zum Beispiel Methoden bereitstellt wie GetProperties
    und da findet man dann auch schön die Properties von IrgendeineKlasse

    Wenn ich nun Typen bestimmter Objekte vergleichen will, dann gibt es z.B. Eigenschaften wie PropertyInfo.PropertyType die einen Type zurückgeben, das ist dann auch eine Instanz von Type, oder?
    Wie vergleicht man dann die Typen zweier Properties?

    VB.NET-Quellcode

    1. Prop1.PropertyType Is Prop2.PropertyType
    2. Prop1.PropertyType = Prop2.PropertyType

    Mit = müsste doch immer False rauskommen (es sind ja verschiedene Instanzen)
    Mit Is müsste immer True rauskommen, beiden Seiten sind ja vom Type Type

    Versteht ihr wo mir der Abstraktionsgrad fehlt? Könnt ihr mir da ein bissle weiterhelfen?

    Viele Grüße

    Haudruferzappeltnoch schrieb:

    Mit Is müsste immer True rauskommen, beiden Seiten sind ja vom Type Type
    Falsch.
    Die linke seite gibt ein Typ-Objekt zurück, was mw. den Typ Integer repräsentiert, die rechte gibt mw ein ein Typ-Objekt zurück, was den Typ FileInfo repräsentiert. Dann ergibt der Vergleich natürlich False.

    Aber die Klasse Type ist halt was besonderes, und alles was damit zusammenhängt.
    Da wird genau der Crossover geleistet, an dem Anfänger so gerne scheitern, wenn sie Typ und Objekt nicht unterscheiden können.

    Also ein Objekt vom Datentypen Type ist in der Lage, Datentypen zu beschreiben.

    Der datentyp Type ist auch besonders in die Sprache integriert: Du kannst zwar für jeden Typen ein Type-Objekt abrufen, aber mit New ein neues Objekt erstellen vom Typ Type - das geht nicht.