Sobes.tech
Middle

O que é transient no contexto da programação em C#?

sobes.tech IA

Resposta da IA

No contexto do C#, transient aparece com maior frequência ao trabalhar com mecanismos de serialização e desserialização de objetos.

O modificador [NonSerialized] (ou [IgnoreDataMember] ao usar DataContractSerializer, ou o atributo [JsonIgnore] ao usar Json.NET) é usado para marcar um campo ou propriedade de uma classe que não deve ser incluída no fluxo de dados durante a serialização do objeto.

Em outras palavras, esse campo ou propriedade é "transitório" ou "temporário" e seu valor não é salvo ao converter o objeto para um formato sequencial (por exemplo, XML, JSON, binário). Após a desserialização subsequente do objeto, esses campos ou propriedades serão inicializados com os valores padrão para seu tipo (por exemplo, null para tipos de referência, 0 para numéricos, false para bool).

Principais exemplos de uso:

  • Dados em cache ou derivados que podem ser recalculados após a desserialização.
  • Referências a recursos do sistema operacional ou objetos externos que não podem ser serializados.
  • Estados temporários ou cálculos intermediários.

Exemplo com [NonSerialized]:

using System;
using System.Runtime.Serialization;

[Serializable] // Necessário para BinaryFormatter
public class Person
{
    public string Name { get; set; }

    [NonSerialized] // Este campo será ignorado durante a serialização
    public int Age;

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}