gpt4 book ai didi

c# - 为什么 C# 不提供类似于 C++ 的常量?

转载 作者:可可西里 更新时间:2023-11-01 07:51:57 24 4
gpt4 key购买 nike

C# 中的引用与 C++ 中的引用非常相似,只是它们是垃圾回收的。

为什么 C# 编译器很难支持以下内容:

  1. 标记为 const 的成员函数。
  2. 对标记为 const 的数据类型(字符串除外)的引用,通过它只能调用 const 成员函数?

我相信如果 C# 支持它,那将非常有用。其一,它确实有助于 C# 程序员返回对私有(private)数据的裸引用(至少我在工作场所看到的是这种情况)看似普遍的同性恋放弃。

或者在 C# 中是否已经存在我所缺少的等价物? (我知道 readonlyconst 关键字,但它们并不能真正满足上述目的)

最佳答案

我怀疑有一些实际原因,还有一些理论上的原因:

  • constness 应该应用于对象 还是引用?如果它在引用中,这应该只是编译时的,还是引用本身的一部分?对同一对象具有非常量引用的其他东西能否在幕后摆弄它?
  • 您是否希望能够像在 C++ 中那样抛弃它?这听起来不太像您在托管平台上想要的东西……但是在 C++ 中有意义的所有那些时间呢?
  • 当声明中涉及多个类型时,语法会变得很棘手(IMO)——想想数组、泛型等。很难准确地计算出哪一位是 const。
  • 如果你不能抛弃它,每个人都必须把它改正。换句话说,.NET 框架类型和您使用的任何其他第 3 方库都必须做正确的事情,否则您会遇到令人讨厌的情况,即您的代码由于一个微妙的问题而无法做正确的事情常量。

虽然现在不能支持它,但有一个很大的原因:

  • 向后兼容性:所有库都无法正确迁移到它,这使得它几乎毫无用处:(

我同意拥有某种常量指示器会很有用,但恐怕我看不到它的发生。

编辑:Java 社区对此争论不休已经有很长一段时间了。关于 relevant bug 的评论相当多您可能会觉得有趣。

关于c# - 为什么 C# 不提供类似于 C++ 的常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/528122/

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