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 ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!