Thats wrong. Not all value types are saved on the stack.
Many developers believe that reference types are stored on the heap while value types are always stored on the stack – this is not entirely true.
First it’s more of an implementation detail of the actual runtime and not a language requirement but more importantly it’s not possible – consider a class (reference type) which has a integer member (value type), the class is stored on the heap and so are it’s members including the value type since its data is copied “by-value”.
class MyClass
{
int a = 5;
}