title: What is the difference between an Array, ArrayList and a List?
body: <p>I am wondering what the exact difference is between a <strong>Array</strong>, <strong>ArrayList</strong> and a <strong>List</strong> (as they all have similar concepts) and where you would use one over the other.</p>
  
  <p>Example:<br/><br/>
  <strong>Array</strong><br/>
  For the <strong>Array</strong> we can only add types that we declare for this example an <strong>int</strong>.</p>
  
  <pre><code>int[] Array = new Int[5]; //Instansiation of an array
  for(int i = 0; i &lt; Array.Length; i++)
  {
     Array[i] = i + 5; //Add values to each array index
  }
  </code></pre>
  
  <p><strong>ArrayList</strong><br/>
  We can add values just like a <strong>Array</strong></p>
  
  <pre><code>ArrayList arrayList = new ArrayList();
  arrayList.Add(6);
  arrayList.Add(8);
  </code></pre>
  
  <p><strong>List</strong><br/>
  Again we can add values like we do in an <strong>Array</strong></p>
  
  <pre><code>List&lt;int&gt; list = new List&lt;int&gt;();
  list.Add(6);
  List.Add(8);
  </code></pre>
  
  <p>I know that in a <strong>List</strong> you can have the generic type <strong></strong> so you can pass in any type that you cannot do in an <strong>Array</strong> but my exact questions are:</p>
  
  <ul>
  <li>Where would you use one over the other?</li>
  <li>The exact difference functionality wise between the three?</li>
  </ul>