I know this isn't a direct answer to the poster's question, but the newer version of C# now allows for direct initialization from the property itself as follows.
public int bar { get; set; } = 0;
Again, I'm aware this doesn't solve the readonly issue as identified (and solved) above.