Where to know/check: Int32 inherits from ValueType, ValueType inherits from Object?
Asked Answered
H

1

6

I cannot find the relationships between these types using .Net reflector. Any idea?

Haulm answered 2/8, 2012 at 6:50 Comment(3)
Nice question, i'm interesting too but i think you cannot see it in reflector cause only keywords like scruct or enum defines type as value for compiler.Gazette
@Denis you can see it in the IL, the C# and the tree...Assibilate
the object browser in VS should also give you the same information...Antetype
A
8

Since you say "using .Net reflector":

enter image description here

If you wanted reflection:

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

which shows:

System.Int32
System.ValueType
System.Object

and if you mean the IL:

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

and:

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

(in reflector, select the type's node, and select IL as the view)

If you mean the C# view, then:

public struct Int32 ...

is enough; the struct keyword means: inherits from ValueType (although not quite in the usual C# class way). ValueType remains a regular class, and has:

public abstract class ValueType ...

and as usual, a class which doesn't specify a base-type means: inherits from object.

Assibilate answered 2/8, 2012 at 7:25 Comment(1)
I mean the C# view. Everyting is clear now. Thanks Marc for giving different approaches which is great.Haulm

© 2022 - 2024 — McMap. All rights reserved.