我们使用Version类识别客户端软件并广泛使用这些值,我们还将这些值存储在数据库中。您如何存储未知版本值?如果我们无法成功查询客户端版本,我们可以获得未知版本值。
我问,因为我喜欢Null object pattern,我不喜欢对null进行常量检查,我希望Version类型是值类型而不是引用类型。但Microsoft将Version类型实现为引用类型。同时,在.NET v4中,他们添加了TryParse()方法,在失败的情况下将结果保存为(0,0)但不是Null。如果在没有提供确切版本值的情况下调用默认构造函数,则会获得(0,0)值,并且内部字段将初始化为(0,0,-1,-1)。也许,微软意识到,版本应该是价值型的,谁知道:)。
但处理未知版本值的最佳方法是什么?总是检查null,还是使用默认构造函数?
答案 0 :(得分:3)
我要检查Null。我认为(0,0)在这种情况下会产生误导。
答案 1 :(得分:2)
我会使用(0,0)
的“默认”值,而不是null
。正如您所说,您不必处理空检查(尽管可以使用空合并轻松解决),它是框架使用的值作为默认值(和失败条件),我不知道版本(0,0)
在任何地方都有意义的任何情况。另外我的印象是程序集必须总是有版本号。因此,值null
可能并不总是可用,尤其是在程序集中。或者至少如果这个值是为了您的利益,您应该遵循框架使用的模式。