Ich kann die Beziehungen zwischen diesen Typen nicht finden mit. NET-Reflektor. Irgendeine Idee?Woher wissen/prüfen: Int32 erbt von ValueType, ValueType erbt von Object?
Antwort
Da Sie "mit .Net Reflektor" sagen:
Wenn Sie wollten Reflexion:
Type type = typeof (int);
while(type != null)
{
Console.WriteLine(type.FullName);
type = type.BaseType;
}
, die zeigt:
System.Int32
System.ValueType
System.Object
und wenn Sie die mittlere IL:
.class public sequential ansi serializable sealed beforefieldinit Int32
extends System.ValueType
und:
.class public abstract auto ansi serializable beforefieldinit ValueType
extends System.Object
(im Reflektor, die Knoten des Typs und wählen IL als view)
Wenn Sie die C# Ansicht bedeuten, dann:
public struct Int32 ...
ist genug; Das struct
Schlüsselwort bedeutet: erbt von ValueType
(obwohl nicht ganz in der üblichen C# class
Weg). ValueType
bleibt eine Regelklasse und verfügt über:
public abstract class ValueType ...
und wie üblich, ein class
, die keinen Basistyp bedeutet nicht angibt: erbt von object
.
ich meine die C# -Ansicht. Alles ist jetzt klar. Danke Marc für die verschiedenen Ansätze, die großartig sind. – user1033098
+1 für die Erklärung verschiedener Möglichkeiten. – Adil
Schöne Frage, ich bin auch interessant, aber ich denke, Sie können es nicht in Reflektor sehen, weil nur Schlüsselwörter wie scruct oder enum Typ als Wert für den Compiler definiert. –
@Denis können Sie es in der IL sehen, die C# und der Baum ... –
der Objekt-Browser in VS sollte Ihnen auch die gleiche Information geben ... –