In @Marc Gravell's answer, as referenced in the C# Language Spec 5.5 it is important to know what is meant by the term "user-defined type".  I haven't found a clear definition w.r.t. this usage in the C# Language Spec.   In the UML and in common parlance, a Class is an instance of a Type.  But in the context of the C# Language Spec, it's meaning is unclear.
The Visual Basic Language Reference section "User Defined Types" (at https://msdn.microsoft.com/en-us/library/cec05s9z.aspx) says 
"Previous versions of Visual Basic support the user-defined type (UDT).  The current version expands the UDT to a structure."
so it would seem that a User-defined Type is a structure, not a Class.    
But ....
According to the "C# Programming Guide" section "Types" (at https://msdn.microsoft.com/en-us/library/ms173104.aspx): 
"A typical C# program uses types from the class library as well as
  user-defined types"
which implies a Class is a user-defined type.  Later, it gives an example of "complex user-defined types:" 
MyClass myClass;
which means "MyClass" is a user-defined type.  And later it says:
"Each type in the CTS is defined as either a value type or a reference
  type. This includes all custom types in the .NET Framework class
  library and also your own user-defined types. "
... which would imply that all Classes created by a developer are a "User Defined Type". 
And, finally, there is this Stackoverflow item in which the meaning of this term is debated inconclusively: How do I determine if a property is a user-defined type in C#?
Therefore, to be safe, I am forced to consider all Classes, either those that I create or those found in the .Net Framework, all to be User-defined Types, and therefore Not Thread Safe for assignment, because it says in the C# Language Spec section 5.5: 
Reads and writes of ... as well as user-defined types, are not guaranteed to be atomic.
It is unfortunate that a colloquial term is used in a precise specification like the C# Language Specification.  Because of this ambiguity, in order to be thread-safe, I may be writing less-optimal code than would be possible if it turns out that "User-defined Type" does not include CLR Classes.
Therefore I am asking for further clarification of this stackoverflow answer as it's current basis for the answer leaves this significant ambiguity.  As it stands, the answer to the question "Is a reference assignment threadsafe?" seems to be "NO".