I riferimenti di questi oggetti sono sullo stack o sull’heap?

Apprezzerei molto se qualcuno potesse dirmi se lo capisco bene:

class X { A a1=new A(); // reference on the stack, object value on the heap a1.VarA=5; // on the stack - value type A a2=a1; // reference on the stack, object value on the heap a2.VarA=10; // on the stack - value type } 

Anche entrambi i riferimenti a1 e a2 sono in pila, mentre i loro valori di “object” sono nell’heap. Ma che VarA variabile VarA , il suo tipo di valore ancora puro?

 class A { int VarA; }