为什么CLR中有些类被封存了?
Why are some classes in the CLR sealed?
我最近一直在使用 System.Version
class 并且想知道为什么它和其他一些足够简单的 class 被标记为 Sealed
( NotInheritable
在 VB).
与一些更复杂的 classes 不同,我看不出这样的 class 被封印会得到什么。
据我所知 source 对于 Version
并不意味着任何原因。
这有 published/official(即不基于意见)的原因吗?是否有一些问题可能是由它派生出来的?专门针对 Version
的情况,或者对于同样简单的 classes.
失败
背景:我不得不重新创建 Version
class 以便更容易地使用双向绑定,因为 MS 版本有 ReadOnly
特性。但是我需要知道推导是否会引起一些问题
Version
是一个 class 代表一个“值”,类似于 DateTime
,但太大而不适合 struct
,它是 class
.但是,适用相同的设计原则。表示值的类型应该是不可变的和密封的(值类型总是密封的)。
您还可以清楚地看到价值观的其他特征:
object.Equals
和 object.GetHashCode
已被覆盖。
- 它实现了
IEquatable<Version>
我最近一直在使用 System.Version
class 并且想知道为什么它和其他一些足够简单的 class 被标记为 Sealed
( NotInheritable
在 VB).
与一些更复杂的 classes 不同,我看不出这样的 class 被封印会得到什么。
据我所知 source 对于 Version
并不意味着任何原因。
这有 published/official(即不基于意见)的原因吗?是否有一些问题可能是由它派生出来的?专门针对 Version
的情况,或者对于同样简单的 classes.
背景:我不得不重新创建 Version
class 以便更容易地使用双向绑定,因为 MS 版本有 ReadOnly
特性。但是我需要知道推导是否会引起一些问题
Version
是一个 class 代表一个“值”,类似于 DateTime
,但太大而不适合 struct
,它是 class
.但是,适用相同的设计原则。表示值的类型应该是不可变的和密封的(值类型总是密封的)。
您还可以清楚地看到价值观的其他特征:
object.Equals
和object.GetHashCode
已被覆盖。- 它实现了
IEquatable<Version>