1

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

public decimal? cost{get;set;}

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

4

4 回答 4

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'
于 2013-06-24T07:39:50.977 回答
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;

你可以在这里详细阅读

于 2013-06-24T07:49:50.003 回答
0

十进制?ist 可以为空,这意味着它可以没有任何值(null 不是 0)。例如,您可以将其传递给您的客户并显示文本“无数据”而不是“0”。

于 2013-06-24T07:40:23.403 回答
0

十进制是一种值类型。添加问号使其可空。 http://msdn.microsoft.com/en-us/library/1t3y8s4s%28VS.80%29.aspx

于 2013-06-24T07:40:59.117 回答