title: What exactly is a reference in C#
body: <p>From what I understand by now, I can say that a reference in C# is a kind of pointer to an object which has reference count and knows about the type compatibility. My question is not about how a value type is different than a reference type, but more about how a reference is implemented. </p>
  
  <p>I have read <a href="https://stackoverflow.com/questions/430112/what-is-the-difference-between-a-c-sharp-reference-and-a-pointer">this post</a> about what differences are between references and pointers, but that does not cover that much about what a reference <em>is</em> but it it's describing more it's properties compared with a pointer in C++. I also understand the differences between passing by reference an passing by value (as in C# objects are by default passed by value, even references), but it is hard for me to understand what really is a reference when I have tried to explain to my colleagues why a parameter sent by reference can not be stored inside a closure as in the Eric Lippert <a href="https://blogs.msdn.microsoft.com/ericlippert/2009/05/04/the-stack-is-an-implementation-detail-part-two/" rel="noreferrer">blog entry</a> about the stack as an implementation detail. </p>
  
  <p>Can somebody provide me with a complete, but hopefully simple explanation about what references really are in C# and a bit about how they are imlemented?</p>
  
  <p>Edit: this is not a duplicate, because in the <a href="https://stackoverflow.com/questions/18229463/reference-type-in-c-sharp">Reference type in C#</a> it is explained how a reference works and how is it different of a value, but what am I asking is how a reference is defined at a low level.</p>