这适用于.NET。 我正在寻找编写空间映射应用程序。一次存储器中会有几个多边形(大约30-50个多边形)。每个polgon都有LatLong点的集合。该集合的范围可以是每个多边形10到200个。但是,有很多计算将使用这些点来完成,这就是为什么(为了性能)我想使LatLong成为一个结构。不过,我很厌倦那些将会在记忆中的LatLong。任何有识之士将不胜感激。 回顾一下:我想知道如果我推荐让LatLong成为一个结构体,因为我希望性能在计算上,或者因为在内存中的latLong的数量而需要一个类。结构与类
结构与类
回答
对此的回答将取决于您的资源优先级,类/结构中的内容以及您如何使用它。我建议你找出你的内存/性能资源是什么样的,然后对这两个实现进行大量测试,看看它们如何适合这些资源参数。如果可能,请尝试测试您期望执行的实际操作。
MSDN also offers some good guidance on when and when not to use structs.从文章:
不要定义的结构,除非该类型具有以下所有 特征:
- 它在逻辑上表示单个值,类似于原始类型 (整数,双精度等等)。
- 它的实例大小小于16个字节。
- 它是不可变的。
- 它不会经常被装箱。
无论你应该这样做还是完全取决于你的应用。我会尝试两种方式,看看哪一个更快。当我有这个问题时,就是这样做的。
用一个有代表性的计算做两个测试实现,一个带一个结构,一个带一个类,然后测量,我重复测量(!!!)的性能。根据我的经验,对这种预期表现的任何偏见很可能在这种情况下变得完全错误。
同意,但使用实际的实际计算会更好。您需要衡量系统的性能,而不是某些可能具有或可能不具有相同性能特征的系统。决定什么是代表性计算并不总是容易的。 – 2011-03-30 14:30:24
我同意,使用真实系统会带来最好的结果。另一方面,当真实系统具有> 50,000行代码时,错误的设计决策将不会像系统仅有500行代码那样容易。 – 2011-03-30 14:38:18
在一般情况下,如果你将有一个大的集合,其中包含在其中的数据不会改变,一旦实例化的简单对象的(你latLongs听起来像他们基本上数据容器),那么我会亲自使用一个不可变的结构体。
- 1. 结构与类
- 2. DTO类与结构
- 3. C++结构与类
- 4. 类与结构与enable_shared_from_this
- 5. 类与它结构.. C++
- 6. 类与数据结构
- 7. C++中的结构与类
- 8. 功能和结构与类
- 9. 可空结构与类
- 10. 具体类名与类层次结构
- 11. 类类型的错误C++与结构
- 12. 自定义类与字典与结构
- 13. Swift:协议与结构与类对比
- 14. 结构与LPWSTR和结构
- 15. 结构哈克与结构类型的数组
- 16. SQLX - 非结构目标类型结构与> 1列(2)
- 17. 与结构与golang
- 18. 类与数据结构参数类C#团结
- 19. 类别层次结构与MySQL
- 20. 使用“与类型”结构在模块
- 21. C#PInvoke结构与类访问冲突
- 22. SCSS结构与多个CSS类
- 23. 编组数组结构与类
- 24. 类表继承与层次结构
- 25. 与ctypes的结构冲突元类
- 26. C++/CLI接口类与接口结构
- 27. 实施模型,结构与类
- 28. 结构与类型和转换
- 29. 同名结构(类)与不同变量
- 30. 问:与基类Python包结构
退房:http://stackoverflow.com/questions/521298/when-to-use-struct-in-c你可能会回答你自己的问题在那里。 – Marc 2011-03-30 14:21:27
像往常一样,首先,你应该把它作为一个结构*如果你想要的价值语义*。做出决定后(你是否想要价值或引用语义?),衡量。然后问自己:“这个表现够好吗?” – 2011-03-30 14:23:20
这是一个绝对常见问题。学习搜索或尝试缩小问题的范围,直至您希望获得其他指导的问题的具体细节。 (PS。写清楚的英语也会有很大帮助) – sehe 2011-03-30 14:41:18