Sobes.tech
Middle

Ce este transient în contextul programării în C#?

sobes.tech AI

Răspuns de la AI

În contextul C#, transient apare cel mai frecvent în lucrul cu mecanismele de serializare și deserializare a obiectelor.

Modificatorul [NonSerialized] (sau [IgnoreDataMember] atunci când se utilizează DataContractSerializer, sau atributul [JsonIgnore] atunci când se utilizează Json.NET) este folosit pentru a marca un câmp sau o proprietate a unei clase care nu trebuie inclusă în fluxul de date în timpul serializării obiectului.

Cu alte cuvinte, un astfel de câmp sau proprietate este "transitoriu" sau "temporar" și valoarea sa nu este salvată atunci când se convertește obiectul într-un format secvențial (de exemplu, XML, JSON, binar). La deserializarea ulterioară a obiectului, aceste câmpuri/proprietăți vor fi inițializate cu valorile implicite pentru tipul lor (de exemplu, null pentru tipurile de referință, 0 pentru numerice, false pentru bool).

Exemple principale de utilizare:

  • Date în cache sau derivate, care pot fi recalculare după deserializare.
  • Referințe la resurse ale sistemului de operare sau obiecte externe, care nu pot fi serializate.
  • Stări temporare sau calcule intermediare.

Exemplu cu [NonSerialized]:

using System;
using System.Runtime.Serialization;

[Serializable] // Necesită pentru BinaryFormatter
public class Person
{
    public string Name { get; set; }

    [NonSerialized] // Acest câmp va fi omis în timpul serializării
    public int Age;

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