<分区>
在 Microsoft .NET 2.0/3.5 中使用结构而不是某些类是否有实际原因?
“结构和类有什么区别?” - 这可能是“.NET 开发人员”职位空缺面试中最受欢迎的问题。面试官认为唯一正确的答案是“结构分配在堆栈上,类分配在堆上”,并且没有进一步询问。
一些谷歌搜索显示:
a) structures have numerous limitations and no additional abilities in comparison to classes and
b) stack (and as such structures) can be faster on very specialized conditions including:
- size of data chunk less that 16 bytes
- no extensive boxing/unboxing
- structure's members are nearly immutable
- whole set of data is not big (otherwise we get stack overflow)
(如有错误或不全,请更正/添加到此列表中)
据我所知,大多数典型的商业项目(ERM、会计、银行解决方案等)甚至都没有定义单一结构,而是将所有自定义数据类型定义为类。这种方法有什么问题或至少不完善吗?
注意:问题是关于普通业务应用程序的,请不要列出“异常”案例,例如游戏开发、实时动画、向后兼容性 (COM/Interop)、非托管代码等等 -这些答案已经在这个类似的问题下: