I've recently found myself using initializers a bit more often than usual, so I thought I'd look into the finer details. I can vaguely remember reading something that Jon Skeet(?) wrote which showed some code that differed only by the inclusion of parenthesis, but behaved differently. It basically looked like:
Foo object1 = new Foo { someValue = true; }
Foo object2 = new Foo() { someValue = true; }
What exactly is the difference between these two statements, what is happening under the hood, and why?