c++ const引用返回值的c#类比是什么?
What is c# analog of C++ const reference return value
我写c++访问类成员
SomeClass const& x() const { return m_x; }
在c#中,似乎唯一的保护方法就是用private(或undefined) set来定义属性。但这只能防止赋值,而不能防止对某些类状态的操纵。
旁注:c++允许通过const指针删除m_x -恕我直言,这简直是标准体的惊人疏忽。
现在,在c# 7.2中,您可以使用ref readonly
来达到相同的目的。你可以在这里查看更多信息。检查第三点
c++中的const
不保护任何东西,你可以毫无问题地抛弃它。
虽然c#没有等价的,但你可以(通常应该)创建真正的不可变类。这将把const
的负担放在返回到它所属位置的对象上,并且您无法做任何事情来"丢弃它"(除非反射)。
相关文章:
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 在C++17中,引用const字符串的语义应该是什么
- 在只读(即 const)访问器上执行结构化绑定的最佳实践是什么?
- "char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ {"剂量是什么意思
- 语法问题:"char [5] const &"是什么意思?
- 'note: 候選人: Volume& Volume::operator=(const Volume&)'.这个错误是什么?
- 在下面函数的返回中添加 const 限定符的重要性是什么?
- int(int)& 或 int(int) const &是什么类型?
- 这个(const vector<vector<int> > &A)"代码段是什么意思?
- classname functionname(const classname & objectname)是什么意思?
- const自动参考绑定到(NULL)指针 - 实际类型是什么
- "const char(&a)[N]"是什么意思?
- "inline operator T*() const"是什么意思?
- const 在具有尾随返回类型的自动退货声明中是什么意思
- :void setData(const Color * & data_ptr)中的 *& 是什么意思;
- 传递const引用参数的意义是什么?它会产生重大影响吗
- 当不需要更改"const-ness"时,"const_cast"的效果是什么?
- auto&x = const int *的类型是什么?
- 成员函数限定符(const除外)是什么意思
- const K& k = K() 在这个构造函数中是什么意思?