why are required property in C#