为什么CLR中的某些课程是密封的?

时间:2017-04-26 12:09:49

标签: .net vb.net sealed

我最近一直在使用System.Version class并且想知道为什么它以及其他一些类似的简单类被标记为SealedNotInheritable在VB)。

与一些更复杂的课程不同,我不知道这样的课程会因为被密封而获得什么。

据我所知,Version Version并不意味着任何理由。

是否有发布/官方(即不是基于意见的)原因?是否有一些问题可能是由它衍生而来的?特别针对Version的情况,或者对于类似的简单类而言则失败。

背景:由于MS版本具有ReadOnly属性,我不得不重新创建let annotation = MKPointAnnotation() mapVew.showAnnotations([annotation], animated: true) 类,以便更轻松地使用双向绑定。但我需要知道派生是否会导致某些问题

1 个答案:

答案 0 :(得分:1)

Version是一个代表“值”的类,类似于DateTime,但是太大而无法轻松适应struct,它是class。但是,相同的设计原则也适用。表示值的类型应该是不可变的和密封的(值类型始终是密封的)。

您还可以清楚地看到其他值的标志:

  • object.Equalsobject.GetHashCode已被覆盖。
  • 它实现了IEquatable<Version>