【问题标题】:Should `Phone` be a class or a struct in C#? [closed]`Phone` 应该是 C# 中的类还是结构? [关闭]
【发布时间】:2016-10-01 20:43:24
【问题描述】:

我有一个 Phone 类型,它有两个属性:Number 和 Description(工作、家庭、手机等)。我不知道应该是class 还是struct。

根据MSDN:

避免定义结构,除非该类型具有以下所有特征:

  • 它在逻辑上表示单个值,类似于原始类型(int、double 等)。
  • 实例大小小于 16 字节。
  • 它是不可变的。
  • 不必经常装箱。

我确定它不会超过 16 个字节,但我不确定它是否满足其他要求。那么我应该使用哪个?

【问题讨论】:

  • “它是不可变的。”你应该使用一个类。
  • 就个人而言,我总是默认选择class。如果您随后发现自己遇到了很多麻烦,那么考虑该类型是否实际上是struct。
  • @Damien_The_Unbeliever 请把它放在答案中
  • 在 SO 上已经有了很好的解释:programmers.stackexchange.com/questions/92339/…
  • 第一眼看起来像struct,但class比struct更灵活,所以如果你不希望有性能问题(你没有数百万个实例,你不想要微秒级响应等)然后从class开始。

标签: c# class struct


【解决方案1】:

如有疑问,请使用class。无论如何,它在大多数情况下效果更好。 structs 是针对特殊情况的——当你打到一个时你就会知道。

【讨论】:

  • 这就是我的想法啊 :) 因为 IMO,它看起来像一个类设计,我几乎可以肯定你有一天会被结构的复制构造函数所困,当传递为范围 !所以肯定的是,除非你知道你想要一个结构,否则你的对象定义为一个类!
  • 我经常从struct 切换到class,但从来没有反过来。
猜你喜欢
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多