C#的readonly与C ++的const
这主要是理解检查,因为我无法找到关于此主题的完整参考。
在C#中,当我编写readonly Foo myFoo
,我基本上说myFoo
是一个指向Foo
的指针,并且指针不能被重新分配。 为了保证底层Foo
不能被重新分配,我需要一个完整的其他类或接口ImmutableFoo
。
现在考虑构造List<Foo>
。 它基本上是一个指向Foo
指针列表的指针,即类似于C ++中的vector<Foo *> *
。 有三个地方可以在C ++中放置const
。
const vector<const Foo *> * const
所以我认为其中每一个的等价物是,
List<Foo> = vector<Foo *> * // No consts
ReadOnlyCollection<Foo> = const vector<Foo *> * // First const toggled
List<ImmutableFoo> = vector<const Foo *> * // Second const toggled
readonly List<Foo> = vector<Foo *> * const // Third const toggled
readonly ReadOnlyCollection<ImmutableFoo>
= const vector<const Foo *> * const // All consts toggled
这张等值表是否正确?
是的,我想你明白了。 我认为这个const只读翻译是正确的,即使你不应该比较这两个关键字 。 我认为C ++ const和C#readonly关键字之间还有许多其他细微和不同的行为。 他们之中有一些是:
TBC ......
链接地址: http://www.djcxy.com/p/87333.html上一篇: C#'s readonly vs C++'s const
下一篇: How to change color of text in whole application by changing theme