什么时候可以使用结构而不是类

Dea*_*ean 3 .net c# vb.net

在我最近工作的一个项目中,我在班上创建了一个结构来解决我遇到的问题,当一位同事看着我的肩膀时,他看起来很嘲弄这个结构并说"把它变成一个班级".

除了我在这个类中需要它之外,我没有任何关于不将它移动到类中的论据,但这种情况有所下降,因为我不能将它作为嵌套类吗?

什么时候可以使用结构?

Jar*_*Par 14

您应该查看值类型使用指南:http://msdn.microsoft.com/en-us/library/y23b5415(vs.71).aspx

文章列出了几个重点,但我认为最有价值的几点是以下几点

  • 值是不可变的吗?
  • 您希望类型具有值语义吗?

如果两个问题的答案都是肯定的,那么你几乎肯定想要使用一个结构.否则我会建议去上课.

使用具有大量成员的结构存在问题.但我发现,如果我考虑上面两点,我的价值类型中很少有超过建议的成员/大小数量.


Rex*_*x M 8

MSDN有一个很好的指导文档来涵盖结构用法.总结一下:

  • 就像原始类型一样.
  • 实例大小小于16个字节.
  • 是不可改变的.
  • 值语义是可取的.

否则,请使用课程.