Mutable-by-copy pattern? - C#