我把c ++访问器写成类成员
SomeClass const& x() const { return m_x; }
似乎c#中这种唯一的保护是使用私有(或未定义)集定义属性。但是这只能防止分配而不是操纵某些阶级状态。
旁注:c ++允许通过const指针删除m_x - 恕我直言,这简直是对标准体的疏忽。
C ++中的const
无法防范任何事情,你可以毫无问题地将其丢弃。
虽然C#没有它的等价物,但你可以(并且通常应该)创建真正的不可变类。这使得const
ness的负担在它所属的对象上返回,并且没有什么可以做“把它扔掉”(禁止反射)。
现在,使用C#7.2,您可以将ref readonly
用于相同的目的。你可以查看更多有关here的信息。检查第三点。