c++ const引用返回值的c#类比是什么?

本文关键字:是什么 const 引用 返回值 c++ | 更新日期: 2023-09-27 18:13:50

我写c++访问类成员

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

在c#中,似乎唯一的保护方法就是用private(或undefined) set来定义属性。但这只能防止赋值,而不能防止对某些类状态的操纵。

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

c++ const引用返回值的c#类比是什么?

现在,在c# 7.2中,您可以使用ref readonly来达到相同的目的。你可以在这里查看更多信息。检查第三点

c++中的const不保护任何东西,你可以毫无问题地抛弃它。

虽然c#没有等价的,但你可以(通常应该)创建真正的不可变类。这将把const的负担放在返回到它所属位置的对象上,并且您无法做任何事情来"丢弃它"(除非反射)。