C# 4.0 有没有一种方法可以在C#中将null值设置为decimal数据类型,而不使用Nullable<;十进制>;或';十进制?';?

C# 4.0 有没有一种方法可以在C#中将null值设置为decimal数据类型,而不使用Nullable<;十进制>;或';十进制?';?,c#-4.0,C# 4.0,公共十进制值{get;set;} 我想在不使用Nullable或“?”的情况下将null值设置为value属性您正在处理的是值类型。值类型不能有空值。想象一个值类型,就像一个整数数组 例如,具有两个特性X=12和Y=15的点在概念上会在内存中表示为: [12,15] 如果您添加了一个标记为name“name”的“string”属性,那么数组中将存储指向该字符串的内存地址: [12,15,65535]其中65535表示堆地址 考虑到这一点,值类型显然不能为null,在最好的情况下,您将拥有一个充满

公共十进制值{get;set;}


我想在不使用Nullable或“?”的情况下将null值设置为value属性

您正在处理的是值类型。值类型不能有空值。想象一个值类型,就像一个整数数组

例如,具有两个特性X=12和Y=15的点在概念上会在内存中表示为:

[12,15]

如果您添加了一个标记为name“name”的“string”属性,那么数组中将存储指向该字符串的内存地址:

[12,15,65535]其中65535表示堆地址

考虑到这一点,值类型显然不能为null,在最好的情况下,您将拥有一个充满零值的数组


可为null的值类型实际上有两个属性:表示的T值类型和一个附加的布尔值,该值表示概念上是否有值。所以我们仍然有一个结构,但这次我们有一个额外的标志,指示“nullability”属性

不行。存在可空值是有原因的;就是这样。即使实现了getter和setter,getter返回的值也应该是不可为空的十进制数,而且setter中得到的“值”将是相同类型的(不可为空的十进制数)。我认为没有办法做你想做的事。你为什么要这样做