It sounds like there may well be a side effect going on within the ToString() method for the reference type, which is generally bad practise as this is a method often used by the .NET framework.
For this to be the case the following would have to be true:
- You are using a custom class that yourself or another 3rd Party built.
- Some modification of the object occurs when calling ToString().
To verify this you could just create an instance of the reference type and call ToString() on it. See if the object has changed (GetHashCode() may be one way to determine this). Or you could inspect the code...