我最近一直在使用System.Version
class并且想知道为什么它以及其他一些类似的简单类被标记为Sealed
(NotInheritable
在VB)。
与一些更复杂的课程不同,我不知道这样的课程会因为被密封而获得什么。
据我所知,Version
Version
并不意味着任何理由。
是否有发布/官方(即不是基于意见的)原因?是否有一些问题可能是由它衍生而来的?特别针对Version
的情况,或者对于类似的简单类而言则失败。
背景:由于MS版本具有ReadOnly
属性,我不得不重新创建let annotation = MKPointAnnotation()
mapVew.showAnnotations([annotation], animated: true)
类,以便更轻松地使用双向绑定。但我需要知道派生是否会导致某些问题
答案 0 :(得分:1)
Version
是一个代表“值”的类,类似于DateTime
,但是太大而无法轻松适应struct
,它是class
。但是,相同的设计原则也适用。表示值的类型应该是不可变的和密封的(值类型始终是密封的)。
您还可以清楚地看到其他值的标志:
object.Equals
和object.GetHashCode
已被覆盖。IEquatable<Version>