Является ли поле readonly в потоке С# безопасным?
public class Foo
{
private readonly int _someField;
public Foo()
{
_someField = 0;
}
public Foo(int someField)
{
_someField = someField;
}
public void SomeMethod()
{
doSomething(_someField);
}
}
Прошли некоторые должности:
- В чем преимущества маркировки поля как только для чтения на С#? - JaredPar предполагает, что только что прочитанные поля являются неизменными и, следовательно, безопасными.
- Readonly Fields и Thread Safety, предполагает, что существует некоторый риск, если конструкторы выполняют большую работу.
Итак, если поле readonly используется как в приведенном выше коде, а конструкторы являются легкими, то это потокобезопасно? Что, если someField - это тип ref (например, массив строк)?