什么是C ++ const参考返回值的c#模拟

问题描述 投票:4回答:2

我把c ++访问器写成类成员

SomeClass const& x() const { return m_x; }

似乎c#中这种唯一的保护是使用私有(或未定义)集定义属性。但是这只能防止分配而不是操纵某些阶级状态。

旁注:c ++允许通过const指针删除m_x - 恕我直言,这简直是对标准体的疏忽。

c# c++ const
2个回答
1
投票

C ++中的const无法防范任何事情,你可以毫无问题地将其丢弃。

虽然C#没有它的等价物,但你可以(并且通常应该)创建真正的不可变类。这使得constness的负担在它所属的对象上返回,并且没有什么可以做“把它扔掉”(禁止反射)。


1
投票

现在,使用C#7.2,您可以将ref readonly用于相同的目的。你可以查看更多有关here的信息。检查第三点。

© www.soinside.com 2019 - 2024. All rights reserved.