2012-08-02 17 views
6

Nie mogę znaleźć relacji między tymi typami za pomocą reflektora .Net. Dowolny pomysł?Gdzie się dowiedzieć/sprawdzić: Int32 dziedziczy po ValueType, ValueType dziedziczy z Object?

+0

Ładne pytanie, ja też jestem interesujący, ale myślę, że nie można go zobaczyć w reflektorze, ponieważ tylko słowa kluczowe, takie jak scruct lub enum, definiują typ jako wartość kompilatora. –

+1

@Denis można zobaczyć go w IL, C# i drzewa ... –

+0

przeglądarka obiektów w VS powinna również dać te same informacje ... –

Odpowiedz

8

Skoro mówisz "przy użyciu .NET reflektor":

enter image description here

Jeśli chciał odbicie:

Type type = typeof (int); 
while(type != null) 
{ 
    Console.WriteLine(type.FullName); 
    type = type.BaseType; 
} 

który pokazuje:

System.Int32 
System.ValueType 
System.Object 

i jeśli masz na myśli IL:

.class public sequential ansi serializable sealed beforefieldinit Int32 
    extends System.ValueType 

oraz:

.class public abstract auto ansi serializable beforefieldinit ValueType 
    extends System.Object 

(w reflektorze, wybierz węzeł typu, a wybrać IL jako widoku)

Jeśli masz na myśli # Widok C, a następnie:

public struct Int32 ... 

wystarczy; Słowo kluczowe structoznacza: dziedziczy po ValueType (chociaż nie całkiem w zwykły sposób C# class). ValueType pozostaje regularne klasy i posiada:

public abstract class ValueType ... 

i jak zwykle, class którego nie określa typu bazowego oznacza: dziedziczy object.

+0

Mam na myśli widok C#. Wszystko jest teraz jasne. Dziękuję Markowi za dawanie różnych podejść, co jest wspaniałe. – user1033098

+0

+1 za wyjaśnienie różnych możliwych sposobów. – Adil

Powiązane problemy