title: Passing objects by reference or not in C#
body: <p>Suppose I have a class like this:</p>
  
  <pre><code>public class ThingManager {
      List&lt;SomeClass&gt; ItemList;
  
      public void AddToList (SomeClass Item)
      {
          ItemList.Add(Item);
      }
  
      public void ProcessListItems()
      {
          // go through list one item at a time, get item from list,
          // modify item according to class' purpose
      }
  }
  </code></pre>
  
  <p>Assume "SomeClass" is a fairly large class containing methods and members that are quite complex (List&lt;>s and arrays, for example) and that there may be a large quantity of them, so not copying vast amounts of data around the program is important.</p>
  
  <p>Should the "AddToList" method have "ref" in it or not? And why?</p>
  
  <p>It's like trying to learn pointers in C all over again ;-) (which is probably why I am getting confused, I'm trying to relate these to pointers. In C it'd be "SomeClass *Item" and a list of "SomeClass *" variables)</p>