如何表示可能未设置的数据

Ric*_*chK 2 c# nullable data-representation

我有一个包含许多属性的类,如:

public class Update
{
    public int Quantity { get; set; }
    public decimal Price { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

每个实例Update不一定具有每个属性集,并且系统的另一部分需要知道哪些已经设置,哪些没有.

我得到的一个选择是制作所有的值类型Nullable,因此null值将代表未设置的概念.虽然这可行,但我并不喜欢明确地拥有一些属性Nullable(值类型)和一些可以作为引用类型的可空的想法.类定义看起来很难看,我不相信null检查在语义上是最好的方法.

我可以创建一个类非常相似,Nullable<T>这对没有约束TIsSet性能.我更喜欢使用此选项Nullable,但我仍然希望看到是否有人有一个比我建议的选项更好的替代表示.

usr*_*usr 5

你真的应该坚持这里先前存在的习语.使用内置的可空性.

我认为你对值和ref类型的可空性的关注是不同的.你的解决方法会起作用.但这只是一种美化改变,让你小心翼翼.我建议您改变自己,而不是在这种情况下更改代码.尽量适应现有的惯例.

编辑:有时您需要能够在通用代码中使值可选.在这种情况下,您需要使用一些自定义选项类型.根据经验,我可以说这是非常讨厌使用.这不是我选择的解决方案.