C#相当于一个const指针/指向C++中的const

lys*_*cid 3 c# c++ clr const

我正在学习C++的基础知识,来自.NET世界(C#).

我发现有趣的一个主题是const关键字及其与指针的使用(const指针/指向const的指针).

我想知道是否有任何C#语言相当于const指针/指向C++的指针?(我知道C#没有指针,我正在考虑引用C#中类似指针的类型).

另外,出于兴趣,如果没有这样的等价物,那么不包括这样一个特征的决定是什么?

Dan*_*ant 6

没有直接等同于在C#中将引用作为"const"传递,但是有其他方法可以实现其目的.最常见的方法是使您的引用类完全不可变(一旦构造,其状态永远不会更改)或将其作为不可变的公共接口传递.后者最接近'const'参数契约的意图(我给你一些参考,所以你可以使用它,但我要求你不要改变它.)一个行为不端的客户可能'当然,将公共界面抛弃为可变形式,但它仍然明确了意图.你也可以在C++中"抛弃"const,认为这很少是一个好主意.


C++中的另一件事是,当您知道传递的引用的生命周期在范围上有限时,您通常更喜欢传递为const.C++通常遵循在方法范围内在堆栈上创建和销毁对象的模式,因此对这些对象的任何引用都不应该在该范围之外持久化(因为在它们超出范围之后使用它们可能会导致真正令人讨厌的堆栈损坏崩溃.) const引用不应该被改变,所以它是一个强烈的暗示,将它存储在某个地方以便稍后引用将是一个坏主意.使用const参数的方法很有希望传递这些范围的引用是安全的.由于C#从不允许存储对堆栈上对象的引用(在参数之外),因此这不是一个问题.

  • @ lysergic-acid如果"相似",你的意思是"完全不同",我们同意,因为我真的没有看到那里的相似性;) (2认同)