You may have seen the comment that I have put in the code in the post : c# - Sample of Lambda expression on List<T> and Events.. And also, I have keep some post on the discussion of Collection Initializer.
There is subtlety in terms of how you write
var names = new List<string>{
"Holy",
"Jon",
"Tom"
};
and
var names = new string [] { "Holy", "Jon", "Tom" };
The former (the List<string> case) will actually calls the List.Add(...) method, while the later, construct some temporary array instance, and assign the reference to the names variable.
so that explain why you can do
var form = new Form { AutoSize = true, Controls = { button } };
but not to
var form = new Form { AutoSize = true, Controls = new []{ button } };