What's New in C# 6.0: Dictionary Initializers
I recently did a column about how to create a simple collection class. In that column, I discussed collection initializers which let you add items to a collection when the collection is instantiated. Here's a variation on the example I used in that column which loads two Customer objects into a List:
List<Customer> cList = new List<Customer>() {new Customer("A123"), new Customer("B246") }
Initializers are handy ... right up until you try to use an initializer with a Dictionary. The resulting code is pretty ugly:
Dictionary<string, Customer> cList = new Dictionary<string, Customer>()
{
{"A123", new Customer("A123")},
{"B246", new Customer("B246")}
};
Even for C#, that's a lot of punctuation marks in a very small space. C# 6.0 gives you a new syntax that saves a few keystrokes but, more importantly, makes the resulting code easier to read by eliminating some curly braces and leveraging the equals sign. The new syntax looks like this:
Dictionary<string, Customer> cList = new Dictionary<string, Customer>()
{
["A123"] = new Customer("A123"),
["B246"] = new Customer("B246")
};
That's considerably easier to read.
Posted by Peter Vogel on 04/14/2015