¿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;
}
}