我知道这是一个愚蠢的问题。我正在尝试自己研究ASP.Net MVC 4,最近我遇到了一个疑问我正在用来研究MVC的教程显示MVC模型创建包含以下代码
public decimal? cost{get;set;}
我想知道他们为什么放?在代码中教程没有解释为什么他们这样做?在代码中。所以我的问题是十进制和十进制之间有什么区别?
答案 0 :(得分:4)
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'
答案 1 :(得分:1)
在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;
您可以详细阅读here
答案 2 :(得分:0)
小数? ist nullable,这意味着它根本没有任何值(null不为0)。你可以,例如将此传递给您的客户并显示文本“无数据”而不是“0”。
答案 3 :(得分:0)
decimal是一种值类型。添加问号使其成为Nullable。 http://msdn.microsoft.com/en-us/library/1t3y8s4s%28VS.80%29.aspx