.NET we have primitive datatypes like int and value types like struct.
And also we have reference types. All of them seem to be derived from object class.
How .NET determine primitive, value type against the reference type?
Where it is done? At compiler or at JIT?
Does this belongs to the capabilities of the compilers?