I’ve done some small tests while writing the library to handle readonly objects in c#. Turns out that getting the value of a sub expression can be costly (since you have to compile the expression and execute). When just setting one property there can be a performance benefit of using the following syntax:
new MyClass(1, "2").With(m => m.MyProperty, 3)
There might be some way of optimizing the code in order to get better performance for the form:
new MyClass(1, "2").With(m => m.MyProperty == 3)
</blockquote> If there are only a few usages then the performance hit is probably negligible.
Comments or errors? Fork post and do a pull request on github