我知道这是一个愚蠢的问题。我正在尝试自己研究 ASP.Net MVC 4,最近我遇到了疑问我用来研究 MVC 的教程显示 MVC 模型创建包含以下代码
public decimal? cost{get;set;}
我想知道他们为什么放?在代码教程中没有解释他们为什么放那个?在代码中。所以我的问题是十进制和十进制有什么区别?
我知道这是一个愚蠢的问题。我正在尝试自己研究 ASP.Net MVC 4,最近我遇到了疑问我用来研究 MVC 的教程显示 MVC 模型创建包含以下代码
public decimal? cost{get;set;}
我想知道他们为什么放?在代码教程中没有解释他们为什么放那个?在代码中。所以我的问题是十进制和十进制有什么区别?
decimal?
可以null
有价值
虽然decimal
不能null
有价值,但它必须始终有价值
有关可空类型的更多信息,请访问http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx
看下面的例子
decimal? foo = null; // value is null
foo = 5.5M; // value is 5.5
foo = null; // value is null again
你不能有这种行为与不可为空的类型
decimal foo = null; // produces compiler error, Cannot convert null to 'decimal'
在 VS 2005 中,我们引入了一种名为“Nullable”的新类型,它看起来像这样(它实际上比这更复杂,但我想保持示例简单):
struct Nullable<T>
{
public bool HasValue;
public T Value;
}
您可以直接使用此结构,但我们还添加了一些快捷语法以使生成的代码更清晰。首先是引入了一种用于声明可空类型的新语法。而不是输入:
Nullable<int> x = new Nullable<int>(125); I can write:
int? x = 125;
你可以在这里详细阅读
十进制?ist 可以为空,这意味着它可以没有任何值(null 不是 0)。例如,您可以将其传递给您的客户并显示文本“无数据”而不是“0”。
十进制是一种值类型。添加问号使其可空。 http://msdn.microsoft.com/en-us/library/1t3y8s4s%28VS.80%29.aspx