Sobes.tech
Middle

¿Qué es transient en el contexto de la programación en C#?

sobes.tech AI

Respuesta de la IA

En el contexto de C#, transient se encuentra con mayor frecuencia en el trabajo con mecanismos de serialización y deserialización de objetos.

El modificador [NonSerialized] (o [IgnoreDataMember] cuando se usa DataContractSerializer, o el atributo [JsonIgnore] cuando se usa Json.NET) se utiliza para marcar un campo o propiedad de una clase que no debe incluirse en el flujo de datos durante la serialización del objeto.

En otras palabras, dicho campo o propiedad es "transitorio" o "temporal" y su valor no se guarda al convertir el objeto en un formato secuencial (por ejemplo, XML, JSON, binario). Tras la deserialización posterior del objeto, estos campos o propiedades se inicializarán con los valores predeterminados para su tipo (por ejemplo, null para tipos de referencia, 0 para numéricos, false para bool).

Ejemplos principales de uso:

  • Datos en caché o derivados que pueden ser recalculados después de la deserialización.
  • Referencias a recursos del sistema operativo o objetos externos que no se pueden serializar.
  • Estados temporales o cálculos intermedios.

Ejemplo con [NonSerialized]:

using System;
using System.Runtime.Serialization;

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

    [NonSerialized] // Esta campo será omitido durante la serialización
    public int Age;

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