Do extension methods like `ToArray` and `ToList` operate by reference or by value?
<p>Let's say I have a private dictionary or a list in my class. I want to return a readonly enumerator so that others can iterate over the list, but not have access to modify the items.</p>

<p>Instead of creating a wrapper class around the original, I'd like to return copies of the original items/elements. Will something like <code>original.ToList&lt;Type&gt;().GetEnumerator()</code> return a list with references to the original items, or a list with copies of the original items?</p>

<p>I should note that I also need indexing (i.e. accessing items by index, still not being able to modify them).</p>
