#1 advantage of making them always by-value: Ridiculously inconsistent use of by-value passing, ref passing and pointer passing. void foo(Thing a); void foo(ref Thing a); void foo(Thing *a); Wait, that's not an advantage at all, that's C++. - Gregor Richards