First is a value type which is stored on the stack and the second is a reference type which is stored on the heap.
This is a frequently repeated statement but it isn't true. How variables are stored is an 'implementation detail'.
The language spec cannot totally avoid the fact that the instances of reference types are stored on a Heap, but for local variables, be they value types or the references to the instances, the story is not so simple.
class A { int b; } // int b is of a value-type but will always live on the Heap
void M() { int a, b; ... x => a+1; ... } // a stored different from b
And how static
fields are stored is not really specified. Nor is it relevant to a C# programmer.
Virtually they are stored in a static segment, which is neither stack nor heap. But I think they are actually allocated on the Heap as part of the Type. An implementation detail that may vary between runtimes.