Yes it will. This is because each type takes up a constant amount of memory at runtime ( int takes, for example, 4 bytes). The structure will take up as much space as is required to place all the fields in memory.
Since you can store any type of value in ValueType , and since ValueType must be exactly the same size as the type you assign to test , the ValueType type is actually a reference type.
Consider:
int a = 0; long b = 1; ValueType test; test = a; test = b;
This is absolutely correct code. test should occupy a fixed size on the stack, and a and b be different sizes. Hopefully this explains why a ValueType cannot be a value type. (This is due to why you cannot deduce value types.)
source share