Потокобезопасное приращение доступно через

сем новичок в C #, поэтому, пожалуйста, потерпите меня. Я немного запутался с безопасностью потока. Когда что-то потокобезопасно, а когда нет?

Являетсячтение (просто чтение из чего-то, что было инициализировано ранее) из поля всегда потокобезопасны?

//EXAMPLE
RSACryptoServiceProvider rsa = new RSACrytoServiceProvider();
rsa.FromXmlString(xmlString);  
//Is this thread safe if xml String is predifined 
//and this code can be called from multiple threads?

Являетсядоступа объект из массива или списка всегда потокобезопасен (если вы используете цикл for для перечисления)?

//EXAMPLE (a is local to thread, array and list are global)
int a = 0;
for(int i=0; i<10; i++)
{
  a += array[i];
  a -= list.ElementAt(i);
}

Являетсяперечисление всегда / всегда безопасно?

//EXAMPLE
foreach(Object o in list)
{
   //do something with o
 }

Можнонаписание и чтение к какому-либо конкретному полю приводить к искаженному чтению (половина поля изменяется, а половина остается неизменной)?

Спасибо за все ваши ответы и время.

РЕДАКТИРОВАТЬ: Я имел в виду, что все потоки только читают и используют (не пишут и не меняют) объект. (за исключением последнего вопроса, где очевидно, что я имел в виду, если потоки читают и пишут). Потому что я не знаю, является ли простой доступ или перечисление потокобезопасным.

Ответы на вопрос(1)

Ваш ответ на вопрос