title: Need clarification of Class type in C# being a reference type as said in the Microsoft Docs
body: <p>The following paragraphs are from this <a href="https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/types/#specifying-types-in-variable-declarations" rel="nofollow noreferrer">link</a>:</p>
  <blockquote>
  <p>A class or a record is a reference type. When an object of the type is created, the variable to which the object is assigned holds only a reference to that memory. When the object reference is assigned to a new variable, the new variable refers to the original object. Changes made through one variable are reflected in the other variable because they both refer to the same data.</p>
  </blockquote>
  <blockquote>
  <p>A struct is a value type. When a struct is created, the variable to which the struct is assigned holds the struct's actual data. When the struct is assigned to a new variable, it's copied. The new variable and the original variable therefore contain two separate copies of the same data. Changes made to one copy don't affect the other copy.</p>
  </blockquote>
  <p>So far what I understand from the first paragraph is that when a <code>class</code> is instantiated and assigned to two different variables what you do to the other variable would reflect on both variables.
  On the second paragraph if a <code>struct</code> is instantiated and assigned to two different variables and something is done to the other the two variables would have different values because they are now two different instances.</p>
  <p>Is my understanding correct? Does this mean that passing a <code>class</code> object to a method is a call by reference and passing a <code>struct</code> object is a call by value? If I'm wrong can someone provide a better explanation?</p>