C# 有没有可能这不是一成不变的

C# 有没有可能这不是一成不变的,c#,thread-safety,C#,Thread Safety,考虑上面的代码。是否存在类不能成为完全不可变对象的情况?如果没有,原因是什么?您可以使用反射(或无法验证的IL)修改该类。不是在信任度低的环境中 这是创建不可变对象的好模式。我喜欢那门课 我不知道.NET内存模型是否足够强大,以至于如果将该对象交给另一个线程,它总是会看到它处于初始化状态。它可能会看到字段未初始化。在x86上,这无论如何都是不可能的,因为存储充当屏障,您需要至少一个存储来发布对象。它可以通过System.Reflection进行更改。什么是可变对象和不可变对象?请加上你不知道的意

考虑上面的代码。是否存在类不能成为完全不可变对象的情况?如果没有,原因是什么?

您可以使用反射(或无法验证的IL)修改该类。不是在信任度低的环境中

这是创建不可变对象的好模式。我喜欢那门课


我不知道.NET内存模型是否足够强大,以至于如果将该对象交给另一个线程,它总是会看到它处于初始化状态。它可能会看到字段未初始化。在x86上,这无论如何都是不可能的,因为存储充当屏障,您需要至少一个存储来发布对象。

它可以通过System.Reflection进行更改。什么是可变对象和不可变对象?请加上你不知道的意思??我不明白你的问题。也许是语言问题。你是说“什么是不可变对象?”?这超出了这个问题的范围。我建议你研究一下。@EhsanSajjad我不敢相信你有8k代表,你在评论部分问了这样一个问题。互联网上有大量关于可变性和不可变性的信息,如果你不满意,那就提出一个问题。@EhsanSajjad我过去认为8k声誉意味着你知道如何使用该网站。
public class LogMessage
{
    public LogMessage(string message, bool isError)
    {
        Message = message;
        IsError = isError;
    }
    public string Message { get; private set; }
    public bool IsError { get; private set; }
}