Sunday, 4 October 2015

C# 6.0 is auto-property initializers

The next new feature of the C# 6.0 is auto-property initializers and get-only auto property. The main problem that they suppose to solve is immutable type declaration. Before C# 6.0, if you want to create immutable type with properties, you have no possibility to use auto property:
1
public string Property { get; set; }
So, you were forced to use regular get-only (read-only) property with read-only backing field:
1
2
3
4
5
6
7
private readonly string prop;
public string Prop { get { return prop; } }
 
public Ctor()
{
    prop = "value";
}
Now, with C# 6.0, you can write:
1
public string Prop { get; } = "value";
Of course, you can use property initialization not only with read-only auto property. Regular one is also working well:
1
public string Prop { get; set; } = "value";
The same as static one:
1
public static string Prop { get; set; } = "value";
You can even use expressions to initialize property:
1
2
3
4
5
public string Prop { get; set; } = InitializeProperty();
public static string InitializeProperty()
{
    return "value";
}

No comments:

Post a Comment