title: Why would one ever use the "in" parameter modifier in C#?
body: <p>So, I (think I) understand what the <strong><code>in</code></strong> parameter modifier does. But what it does appears to be quite redundant.</p>
  
  <p>Usually, I'd think that the only reason to use a <strong><code>ref</code></strong> would be to modify the calling variable, which is explicitly forbidden by <strong><code>in</code></strong>. So passing by <strong><code>in</code></strong> reference seems logically equivalent to passing by value.</p>
  
  <p>Is there some sort of performance advantage? It was my belief that on the back-end side of things, a <strong><code>ref</code></strong> parameter must at least copy the physical address of the variable, which should be the same size as any typical object reference.</p>
  
  <p>So, then is the advantage just in larger structs, or is there some behind-the-scenes compiler optimization that makes it attractive elsewhere? If the latter, why shouldn't I make <em>every</em> parameter an <strong><code>in</code></strong>?</p>