十进制有什么区别?和十进制

时间:2013-06-24 07:38:12

标签: asp.net-mvc-4

我知道这是一个愚蠢的问题。我正在尝试自己研究ASP.Net MVC 4,最近我遇到了一个疑问我正在用来研究MVC的教程显示MVC模型创建包含以下代码

public decimal? cost{get;set;}

我想知道他们为什么放?在代码中教程没有解释为什么他们这样做?在代码中。所以我的问题是十进制和十进制之间有什么区别?

4 个答案:

答案 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