readonly
在C#中的字段是线程安全的吗?
public class Foo
{
private readonly int _someField;
public Foo()
{
_someField = 0;
}
public Foo(int someField)
{
_someField = someField;
}
public void SomeMethod()
{
doSomething(_someField);
}
}
< p >浏览了一些帖子:
- 在C#中将字段标记为readonly有什么好处?- JaredPar建议,只要构造后的只读字段是不可变的,因此是安全的。
- ReadOnly Fields and Thread Safety表明,如果构造函数做了很多工作,则存在一定风险。
那么,如果像上面的代码一样使用readonly字段,并且构造函数比较轻量级,它是否是线程安全的? 如果
_someField是引用类型(例如字符串数组)会怎样?