gpt4 book ai didi

C# 等价于 C++ 中的 const 指针/指向 const 的指针

转载 作者:太空狗 更新时间:2023-10-29 19:59:18 64 4
gpt4 key购买 nike

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

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

我想知道是否有任何 C# 语言等效于 C++ 具有的 const 指针/指向 const 的指针?(我知道 C# 没有指针,我认为引用是 C# 中类似指针的类型)。

另外,出于兴趣,如果没有这样的等价物,不包含这样的功能背后的决定是什么?

最佳答案

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


C++ 中的另一件事是,当您知道要传递的引用的生命周期在范围内受到限制时,您通常更愿意作为 const 传递。 C++ 通常遵循在方法范围内的堆栈上创建和销毁对象的模式,因此对这些对象的任何引用都不应该保留在该范围之外(因为在它们超出范围后使用它们可能会导致非常讨厌的堆栈损坏崩溃。)一个 const 引用不应该被改变,所以这是一个强烈的暗示,将它存储在某个地方以供以后引用将是一个坏主意。带有 const 参数的方法 promise 可以安全地传递这些作用域引用。由于 C# 不允许在堆栈上存储对对象的引用(在参数之外),因此这不是什么大问题。

关于C# 等价于 C++ 中的 const 指针/指向 const 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14025329/

64 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com