Qual é a diferença entre decimal? e decimal

Eu sei que esta é uma pergunta boba.Estou tentando estudar ASP.Net MVC 4 me e, recentemente, eu encontrei com uma dúvida O tutorial que estou usando para estudar MVC mostra uma criação de modelo MVC contém o seguinte código

public decimal? cost{get;set;}

e estou me perguntando por que eles colocam? no código O tutorial não explicou por que eles colocaram isso? no código. Então, minha pergunta é qual é a diferença entre decimal e decimal?

1

7 Respostas

decimal? can have null value

enquanto decimal não pode ter valor null , ele deve sempre ter valor

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

veja o exemplo a seguir

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

você não pode ter esse comportamento com o tipo não anulável

decimal foo = null;//produces compiler error, Cannot convert null to 'decimal'
4
adicionado

No VS 2005, estamos introduzindo um novo tipo chamado "Nullable", que se parece com algo assim (na verdade, é mais complexo que isso, mas quero manter o exemplo simples):

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

Você pode usar essa estrutura diretamente, mas também adicionamos algumas sintaxes de atalho para tornar o código resultante muito mais limpo. A primeira é a introdução de uma nova sintaxe para declarar um tipo anulável. Em vez de digitar:

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

int? x = 125;

You can read this in detail here

1
adicionado
Você provavelmente deve escrever uma descrição em vez de copiá-la do link. Fiquei um pouco confuso por um segundo quando li que algo novo estava sendo introduzido em uma versão de 8 anos do Visual Studio.
adicionado o autor Robert Rouhani, fonte

No VS 2005, estamos introduzindo um novo tipo chamado "Nullable", que se parece com algo assim (na verdade, é mais complexo que isso, mas quero manter o exemplo simples):

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

Você pode usar essa estrutura diretamente, mas também adicionamos algumas sintaxes de atalho para tornar o código resultante muito mais limpo. A primeira é a introdução de uma nova sintaxe para declarar um tipo anulável. Em vez de digitar:

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

int? x = 125;

You can read this in detail here

1
adicionado
Você provavelmente deve escrever uma descrição em vez de copiá-la do link. Fiquei um pouco confuso por um segundo quando li que algo novo estava sendo introduzido em uma versão de 8 anos do Visual Studio.
adicionado o autor Robert Rouhani, fonte

decimal? ist anulável, ou seja, não pode ter valor algum (null não 0). Você pode, por exemplo passe isso para seu cliente e mostre um texto "sem dados" em vez de "0".

0
adicionado

decimal? ist anulável, ou seja, não pode ter valor algum (null não 0). Você pode, por exemplo passe isso para seu cliente e mostre um texto "sem dados" em vez de "0".

0
adicionado

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
adicionado

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
adicionado