gpt4 book ai didi

如果类可以覆盖它,C# 为什么需要结构?

转载 作者:可可西里 更新时间:2023-11-01 03:05:55 25 4
gpt4 key购买 nike

只是想知道为什么我们需要结构,如果类可以做所有的结构,甚至更多?我认为将值类型放入类中没有副作用。

编辑:看不到任何使用 struct 的充分理由

结构类似于类,具有以下主要区别:

  • 结构是值类型,而类是引用类型。
  • 结构不支持继承(除了隐式派生自对象)。
  • 一个结构可以有所有的成员类可以,但以下情况除外:
  • 无参构造函数
  • 终结器
  • 虚拟成员(member)

当需要值类型语义时,使用结构而不是类。结构的好例子是数字类型,其中赋值复制值而不是引用更自然。因为结构是值类型,所以每个实例不需要在堆上实例化一个对象。这在创建一个类型的多个实例时可能很重要。

最佳答案

自定义值类型不是绝对必要的 - 例如,Java 就不需要它们。但是,它们仍然有用。

例如,在 Noda Time 中我们非常广泛地使用它们,作为一种表示瞬间之类的东西的有效方式,而无需涉及对象的开销。

我不会说“class 可以做所有 struct 可以做的,甚至更多”——它们的行为不同,应该以不同的方式思考。

关于如果类可以覆盖它,C# 为什么需要结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2299606/

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