2

我来自 C++,我非常想念 C# 中的“const”。

我在我的代码中找到了一个讨厌的错误,考虑一下:

class MyClass {
    BitArray myFlags { get; private set; } // this should not be able to be manipulated from outside

    // ... constructor here creating the BitArray ...
}

// ...

MyClass foo = new MyClass();

BitArray bar = foo.myFlags;
bar.SetAll(false); // circumvents encapsulation eventually putting the class in inconsitent state

用户可以毫无问题地改变我的对象的状态。如何安全地公开一个类的成员,而不让用户有机会操纵我的对象的状态?在提供对该成员的公共(读取)访问权限时,我是否必须“.clone()”每个基于引用的成员(基本上是所有内容)?

我想要实现的是适当的封装。当用户创建我的类的实例并读取成员时,我希望保护该成员不被写入,除非它也有一个公共设置器。

4

1 回答 1

0

C# 提供 ReadOnlyCollection 作为不可变集合的选项。

希望能帮助到你!

于 2014-05-30T08:19:05.090 回答