title: In .NET, can we add an element to a List without synchronizing it when multithreading?
body: <p>Normally, to access a shared variable when multithreading, we need to do the following and synchronize it:</p>
  
  <pre><code>'''This is VB code. 
  'Lock variable to request access and wait. 
  Monitor.Enter(list1)
  Try
      list1.item(i) = 42
  Finally
    Monitor.Exit(Me)
  End Try
  </code></pre>
  
  <p>But do i need to do this locking in this case where I want to add an element to a List at a specific <code>i</code>? This <code>i</code> value will only be edited once, so I don't need to worry about an index being changed twice. </p>
  
  <p>And what happens if it was an Array or an ArrayList, that I set? What is the fastest to use if I am sure to not edit an index twice? </p>