In C#, when you call a constructor, you can add one or more property initializers in curly braces:var foo = new Bar() { Armpit = new Flapdoodle() { Limpet = 2 } };What if that feature were generalized to set properties on a return value:var baz = foo.Armpit { Limpet = 4 };This would be handy in cases like this:var things = coll    .Select(x => {        var a = CreateA(x);        a.Parent = this;        return a;    });That's a common pattern in projecting collections via LINQ, but you see it elsewhere too: You have to declare a local variable and add some noise just to set one property on a return value before you pass it along to something else. You writef2(f1());...but then whoops, something needs to change, so it becomes three lines:A a = f1();a.B = c;f2(a);It seems like it might be nicer to be able to express the same code as follows:var things = coll.Select(x => CreateA(x) { Parent = this } );f2(f1() { B = c });My question is this: Is this merely not useful enough to bother with, or is it actively a bad idea for some reason that's obvious to the C# team but not to me? 
Hypothetical extension to C# property initializer syntax
c#;language design;syntax;language features