Readonly automatic property
I got a question during my latest presentation about automatic properties (full name is actually automatically implemented properties) with just a ‘getter’. I could not remember the syntax, thought it was something with the readonly keyword. I was wrong, here’s the correct syntax.
public class Training
{
public string Title { get; private set; }
public int Days { get; set; }
}
Note that this does have a setter, although it’s set to private. The reason is that it’s otherwise impossible to actually set the Title of the training. Normally we would set the backing field ‘_title’, but as this is generated by the compiler, we can’t access it yet.
The equivalent is:
public class Training
{
private string _title;
private int _days;
public string Title
{
get { return _title; }
private set
{
_title = value;
}
}
public int Days
{
get { return _days; }
set { _days = value; }
}
}
Note that the private setter is still there. You can remove it completely and set the backing field as explained.