When should we use immutable data structures? - C#