C# 赋值线程安全

C# assignment thread safe

下面的赋值代码线程安全吗?

public Stream Stream
{
    get
    {
        return stream ?? (stream = new NetworkStream(Socket));
    }
    set
    {
        stream = value;
    }
}

没有。完全有可能调用 set setter,在评估流之后(为空),但在分配新的 NetworkStream 之前。这意味着新设置的流(通过 setter)被新的 NetworkStream 覆盖。