I think you are either doing something wrong or completely mis-diagnosing the issue because changing the value of a member of a reference type will absolutely update the instance being referred to 🙂
I have no opinion on Unity but it uses an older non-modern version of .NET and C# and folks here who are familiar with it say don't try to learn Unity until you have a good grasp of C# itself.
I probably learned C# before you were born so I'm not too up to speed on the most recent books, but The C# Players Guide and Head First C# both have good reputations.
And if you are starting out any recent book should be fine. It might not cover 100% of the latest features of the language but as a beginner you don't need those anyway.