在C++中,您可以定义一个常量方法,如下所示:
int func_that_does_not_modify_this(int arg) const {}
Run Code Online (Sandbox Code Playgroud)
放置const在函数末尾可以防止意外修改任何内部属性,并让调用者知道此函数不会修改该对象.
C#中有这样的概念吗?
Jon*_*eet 52
不,C#中没有类似的东西.它已经被讨论了很多,但是很难让const以这样的方式工作,它在编译时是可验证的,不能像在C++中那样被丢弃,并且仍然相当容易实际使用而不需要每个人都必须当他们设计自己的课程时,完全正确.
当然,如果你设计自己的类型是不可变的(比如string),那么它上面的所有实例方法都是有效的const.这并不总是实用的,但在适当的地方使用它是一项重要的技术.
C# 8.0 添加了对 C++ 风格const方法的支持,但仅限于structs. 您可以readonly向方法减速添加修饰符,以进行任何修改以在其中声明编译器警告(如果您愿意,可以将其定义为错误)。结构readonly体方法仍可以调用非readonly方法,但该方法将在 的副本上调用struct,以防止对原始数据进行任何更改。
了解更多信息:
\nreadonly实例成员没有.在C#中没有类似的东西.
也没有const &.
正如Jon所指出的,你可以明显地实现一个const方法,但除了文档之外,没有办法让调用者知道方法是const.
| 归档时间: |
|
| 查看次数: |
24750 次 |
| 最近记录: |