Index initializers
This is one of a series of posts on some of the new features in C# 6.0, which was just released.
When Linq was added, a number of cool side-features ended up being added as well–these were things that were needed for Linq, but added value by themselves as well, such as extension methods and object initializers:
Person p = new Person() { Name = "Bob",
Birthday = new DateTime(2000,01,01) };
Likewise, you could also initialize collections:
List people = new List() { "Bob", "Fred", "George" };
But what you couldn’t do in this way, until now, was easily initialize a dictionary or other object that used indexers. Index initializers allow you to set values via the Indexer on an object:
Dictionary<string, int> nameToAge = new Dictionary<string, int>()
{
["Bob"] = 12,
["Fred"] = 20,
["George"] = 35
};
This adds some consistency to initialization, and also can be very helpful when you are using Linq and need to pass a new, but initialized, dictionary. You can also mix in initialization if your class supports an indexer along with other properties:
Person p = new Person()
{
Name = "Bob",
Birthday = new DateTime(2000,01,01),
[0] = "123 Main Street"
};
Yes, this is a terrible example. A better example would involve a dictionary-like class that also had some additional properties.
Here are links to posts about other new features in C# 6.0:

Leave a Reply