Existe um motivo especifico para não colocar o Int da Duração como nula " public int ? Duracao" ? Eu sei que propriedades do tipo int geralmente não são nulas por ser tipo valor, mas o que mudaria nesse caso ai da Desserialização ?
Existe um motivo especifico para não colocar o Int da Duração como nula " public int ? Duracao" ? Eu sei que propriedades do tipo int geralmente não são nulas por ser tipo valor, mas o que mudaria nesse caso ai da Desserialização ?
Olá Marconi! Tudo certo?
Em C#, os tipos de dados são divididos em dois grandes grupos: tipos de valor e tipos de referência. Os tipos de valor, como int
, double
, e bool
, armazenam os próprios dados. Já os tipos de referência, como string
, object
, e arrays, armazenam uma referência para os dados.
Por padrão, os tipos de valor não podem ser nulos porque eles sempre têm um valor padrão (por exemplo, 0
para int
). No entanto, você pode tornar um tipo de valor anulável usando o operador ?
, como em int?
. Isso é útil quando você precisa representar a ausência de um valor numérico válido, como em casos onde a informação pode não estar disponível ou não aplicável.
No contexto da desserialização, se você espera que um campo possa não estar presente ou ser nulo no JSON, é uma boa prática usar tipos anuláveis. Por exemplo, se a propriedade Duracao
pode estar ausente ou ser nula no JSON, declarar public int? Duracao { get; set; }
permitirá que você capture essa ausência de valor sem causar uma exceção.
Por outro lado, string
já é um tipo de referência e pode ser nulo por natureza, então não precisa do operador ?
para indicar que pode ser nulo.
Espero ter ajudado e bons estudos!