私はこれがばかげた質問であることを知っています.私はASP.Net MVC 4を自分で勉強しようとしていますが、最近疑問に遭遇しました.MVCを勉強するために使用しているチュートリアルでは、MVCモデルの作成に次のコードが含まれていることが示されています.
public decimal? cost{get;set;}
なぜ彼らが入れたのだろうか?チュートリアルでは、なぜ彼らがそれを入れたのか説明していませんでした。コードで。だから私の質問は、10進数と10進数の違いは何ですか?
私はこれがばかげた質問であることを知っています.私はASP.Net MVC 4を自分で勉強しようとしていますが、最近疑問に遭遇しました.MVCを勉強するために使用しているチュートリアルでは、MVCモデルの作成に次のコードが含まれていることが示されています.
public decimal? cost{get;set;}
なぜ彼らが入れたのだろうか?チュートリアルでは、なぜ彼らがそれを入れたのか説明していませんでした。コードで。だから私の質問は、10進数と10進数の違いは何ですか?
decimal?
null
値を持つことができます
値をdecimal
持つことはできませんがnull
、常に値を持つ必要があります
http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspxの null 許容型の詳細
次の例を見てください
decimal? foo = null; // value is null
foo = 5.5M; // value is 5.5
foo = null; // value is null again
null を許容しない型でこの動作を行うことはできません
decimal foo = null; // produces compiler error, Cannot convert null to 'decimal'
VS 2005 では、次のような "Nullable" という名前の新しい型を導入しています (実際にはこれよりも複雑ですが、例を単純にしたいと思います)。
struct Nullable<T>
{
public bool HasValue;
public T Value;
}
この構造体は直接使用できますが、結果のコードをより簡潔にするために、いくつかのショートカット構文も追加しました。1 つ目は、null 許容型を宣言するための新しい構文の導入です。次のように入力する代わりに:
Nullable<int> x = new Nullable<int>(125); I can write:
int? x = 125;
ここでこれを詳しく読むことができます
小数?つまり、値をまったく持たない可能性があります (0 以外の null)。たとえば、これをクライアントに渡して、「0」ではなく「データなし」というテキストを表示できます。
decimal は値型です。疑問符を追加すると、Nullable になります。 http://msdn.microsoft.com/en-us/library/1t3y8s4s%28VS.80%29.aspx