Difference between class, struct and record - C#