valuetype的确是类类型,但是他的子类却是值类型,这是因为clr对他的子类经过了特殊的处理。clr若判断某类继承自valuetype,那么会在内存分配方面使它具有值类型的特征(例如直接分配在栈上),这和类库的继承层次结构并无多大关系。C#这边的编译器也经过了特殊处理,使值类型在诸多方面不同于类类型,例如,我们不可以声明一个继承自valuetype的值类型等等。
ValueType是值类型的基类,并不是类类型。