Search code examples
.netobjectvalue-typeint32

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


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


Solution

  • 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.