这个问题在这里已有答案:

我想看看我是否可以使类的实例不可变,即使类本身不是 . 我在这里有类似的情况 IntPtr.Zero 和其他类似的静态字段,除了它是一个可变类而不是结构 .

class TestClass
{
    public static readonly TestClass GoldStandard = new TestClass();
    public int field = 0;
}

class Program
{
    static void Main(string[] args)
    {
        TestClass test = TestClass.GoldStandard;

        test.field = 1; // I want to keep this from happening.

        Console.WriteLine(TestClass.GoldStandard.field);
    }
}

我该怎么做才能使 GoldStandard 不被修改?

编辑:我很遗憾我的问题被误解了 . 这显然不是Immutable type and property in C#How do I create an immutable Class?的重复 . 这些问题是关于如何创建不可变类,而不是如何创建可变类的不可变实例 .

至于Is there an easy way to make an immutable version of a class?,它听起来与我的问题非常相似 . 但是,有一些重要原因不应该计算在内 .

  • 这个问题询问如何在实例的生命周期中的某个时刻使实例成为不可变的,而不是让一个可变类的实例从一开始就是不可变的 .

  • 该问题询问如何生成不可变的第二类来模仿可变类,而不是让一个可变类在特定情况下充当不可变类 .

  • 这个问题的答案根本没有解决我的问题,主要是关于一般不可变类的工作方式 .

我理解主持人在扫描复制品时不能花太多时间深入理解这些问题,但我很难认为由于这种肤浅的相似性而将我的问题作为副本关闭是公平的 .