2016-01-09 53 views
4

根据ReferenceSource,所述Version类是sealedICloneableIComparableIComparable<Version>IEquatable<Version>。它也只存储int的值。 .NET程序员为什么选择将这个类变成一个类而不是一个结构,是否有特定的原因?为什么有人需要null版本?为什么.NET的版本是类而不是结构?

这里的字段声明块从ReferenceSource:

// AssemblyName depends on the order staying the same 
private int _Major; 
private int _Minor; 
private int _Build = -1; 
private int _Revision = -1; 

他们甚至作出评论,称他们需要保持一致的领域。也许这只是我,但这真的是一个结构化的东西?

+1

“struct”和“class”之间的区别不仅仅是允许一个“null”值...... –

+3

@WillemVanOnsem OP显然知道这一点,因此问题中提到的所有细节,使这个类的行为大多像一个值。 –

+1

@WillemVanOnsem我知道,但这是唯一的使用,我可以把它看作是一个类而不是一个结构... –

回答

5

为什么有人需要null版本?

指定没有指定版本,例如AssemblyName,如在您的问题的评论中提到的。例如,AssemblyName在传递到Assembly.Load时可能省略版本,在这种情况下,其Version属性将为null。请记住,这些类型是为.NET 1.0创建的,它没有泛型,因此Nullable<Version>还不存在。

相关问题