how objects are stored in memory in c#