Given a struct like this:
public struct SomeStruct { public SomeStruct(String stringProperty, Int32 intProperty) { this.StringProperty = stringProperty; this.IntProperty = intProperty; } public String StringProperty { get; set; } public Int32 IntProperty { get; set; } }
Of course, a compiler error is generated that reads The ‘this’ object cannot be used before all of its fields are assigned to.
Is there a way to assign values to the backing fields or the properties themselves, or do I have to implement properties the old-fashioned way with my own explicit backing fields?
Prior to C# 6, you need to use the ‘this’ constructor in this scenario:
Doing this calls the default constructor and by doing so, it initializes all the fields, thus allowing
thisto be referenced in the custom constructor.Edit: until C# 6, when this started being legal; however, these days it would be much better as a
readonly struct: