I thought I understood what Immutable meant, however I don\'t understand why the following compiles and works:
DateTime dt = DateTime.Now;
Console.WriteLine
See this.
Read the description of all those methods. It always says "Returns a new DateTime...". It does not change the current DateTime object, thus it is immutable.
Variable reference is a different thing. Think of it just as a pointer to the actual immutable DateTime object that can be changed to point a different one.