Was ist der Unterschied zwischen dezimal? und dezimal

Ich weiß, dass das eine alberne Frage ist. Ich versuche, ASP.Net MVC 4 selbst zu studieren, und vor kurzem bin ich mit einem Zweifel angetroffen. Das Tutorial, das ich MVC-Studie verwende, zeigt eine MVC-Modell-Erstellung enthält den folgenden Code

public decimal? cost{get;set;}

und ich frage mich, warum sie setzen? im Code Das Tutorial hat nicht erklärt warum sie das gemacht haben? im Code. Also meine Frage ist, was ist der Unterschied zwischen Dezimal und Dezimal?

1

7 Antworten

decimal? can have null value

während dezimal keinen Wert null haben kann, muss er immer einen Wert haben

more about nullable types on http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx

schau dir das folgende Beispiel an

decimal? foo = null;//value is null
foo = 5.5M; //value is 5.5
foo = null;//value is null again

Sie können dieses Verhalten nicht mit NULL-Typ haben

decimal foo = null;//produces compiler error, Cannot convert null to 'decimal'
4
hinzugefügt

In VS 2005 führen wir einen neuen Typ namens "Nullable" ein, der ungefähr so ​​aussieht (er ist tatsächlich komplexer, aber ich möchte das Beispiel einfach halten):

struct Nullable
{
    public bool HasValue;
    public T Value;
} 

Sie können diese Struktur direkt verwenden, aber wir haben auch einige Abkürzungssyntax hinzugefügt, um den resultierenden Code viel sauberer zu machen. Die erste ist die Einführung einer neuen Syntax zum Deklarieren eines Nullable-Typs. Anstatt zu tippen:

Nullable x = new Nullable(125); I can write:

int? x = 125;

You can read this in detail here

1
hinzugefügt
Sie sollten wahrscheinlich selbst eine Beschreibung schreiben, anstatt sie aus dem Link zu kopieren. Ich war ein wenig verwirrt, als ich las, dass in einer 8 Jahre alten Version von Visual Studio etwas Neues eingeführt wurde.
hinzugefügt der Autor Robert Rouhani, Quelle

In VS 2005 führen wir einen neuen Typ namens "Nullable" ein, der ungefähr so ​​aussieht (er ist tatsächlich komplexer, aber ich möchte das Beispiel einfach halten):

struct Nullable
{
    public bool HasValue;
    public T Value;
} 

Sie können diese Struktur direkt verwenden, aber wir haben auch einige Abkürzungssyntax hinzugefügt, um den resultierenden Code viel sauberer zu machen. Die erste ist die Einführung einer neuen Syntax zum Deklarieren eines Nullable-Typs. Anstatt zu tippen:

Nullable x = new Nullable(125); I can write:

int? x = 125;

You can read this in detail here

1
hinzugefügt
Sie sollten wahrscheinlich selbst eine Beschreibung schreiben, anstatt sie aus dem Link zu kopieren. Ich war ein wenig verwirrt, als ich las, dass in einer 8 Jahre alten Version von Visual Studio etwas Neues eingeführt wurde.
hinzugefügt der Autor Robert Rouhani, Quelle

Dezimal? ist Nullwert, das heißt, es kann überhaupt keinen Wert haben (null nicht 0). Sie können z.B. Übergeben Sie dies Ihrem Client und zeigen Sie anstelle von "0" den Text "keine Daten" an.

0
hinzugefügt

Dezimal? ist Nullwert, das heißt, es kann überhaupt keinen Wert haben (null nicht 0). Sie können z.B. Übergeben Sie dies Ihrem Client und zeigen Sie anstelle von "0" den Text "keine Daten" an.

0
hinzugefügt

decimal is a value type. Adding the question mark makes it Nullable. http://msdn.microsoft.com/en-us/library/1t3y8s4s%28VS.80%29.aspx

0
hinzugefügt

decimal is a value type. Adding the question mark makes it Nullable. http://msdn.microsoft.com/en-us/library/1t3y8s4s%28VS.80%29.aspx

0
hinzugefügt