The main advantage here with a dictionary is consistency. With a dictionary, initialization did not look the same as usage.
For example, you could do:
var dict = new Dictionary<int,string>();
dict[3] = "foo";
dict[42] = "bar";
But using initialization syntax, you had to use braces:
var dict = new Dictionary<int,string>
{
{3, "foo"},
{42, "bar"}
};
The new C# 6 index initialization syntax makes initialization syntax more consistent with index usage:
var dict = new Dictionary<int,string>
{
[3] = "foo",
[42] = "bar"
};
However, a bigger advantage is that this syntax also provides the benefit of allowing you to initialize other types. Any type with an indexer will allow initialization via this syntax, where the old collection initializers only works with types that implement IEnumerable<T>
and have an Add
method. That happened to work with a Dictionary<TKey,TValue>
, but that doesn't mean that it worked with any index based type.