【发布时间】:2011-12-06 11:05:28
【问题描述】:
如果我查看 .NET 类型 System.Version 的成员,创建值类型(C# 结构)而不是引用类型(类)可能是一个更好的主意。
Microsoft 决定以这种方式实现该类型的原因或论据可能是什么?它只是一种“错误”/错误/无关紧要还是“功能”(换句话说:“真正想要和有用的”?
有像 Parse() 和 TryParse() 这样的方法,它们是典型的值类型,例如System.Int32、System.Double 或 System.Guid。 System.Version 的属性仅存储短值和整数值(s.System.TimeSpan),类型本身是可比较的(使用运算符),并且作为结构,可能不需要使其可克隆。
我对“现状”没有任何反对意见,只是为了满足我的好奇心;-)
编辑:添加了对System.TimeSpan的比较。
【问题讨论】:
-
既然这些类型不是必须的结构,那么问题是没有意义的。
-
没错,但我很想知道做出这个决定的原因是什么
-
@Andrey - 似乎是一个合理的问题,因为
Version看起来是值类型的完美选择。 -
为什么重要?如果它是一个结构,它实际上会改变你的任何编码吗?
-
我能想到的真正原因只有一个:结构不能有默认构造函数。版本 0.0.0.0 是有效版本。如果它是一个结构,那么它将需要一个额外的“版本已正确初始化且有效”标志。
标签: .net types reference system.version