Sobes.tech
Middle

Šta je transient u kontekstu programiranja u C#?

sobes.tech АИ

Одговор од АИ

U kontekstu C#, transient se najčešće javlja prilikom rada sa mehanizmima serializacije i deserializacije objekata.

Modifikator [NonSerialized] (ili [IgnoreDataMember] pri korišćenju DataContractSerializer, ili atribut [JsonIgnore] pri korišćenju Json.NET) koristi se za označavanje polja ili svojstva klase koje ne treba uključiti u tok podataka tokom serializacije objekta.

Drugim rečima, takvo polje ili svojstvo je "prelazno" ili "privremeno" i njegova vrednost se ne čuva prilikom pretvaranja objekta u sekvencijalni format (npr. XML, JSON, binarni). Pri kasnijoj deserializaciji objekta, ta polja/svojstva će biti inicijalizovana vrednostima po defaultu za njihov tip (npr. null za referentne tipove, 0 za numeričke, false za bool).

Glavni primeri upotrebe:

  • Keširani ili izvedeni podaci koji mogu biti ponovo izračunati nakon deserializacije.
  • Referencije na resurse operativnog sistema ili eksternih objekata koje nije moguće serializovati.
  • Privremena stanja ili međucelokupne računice.

Primer sa [NonSerialized]:

using System;
using System.Runtime.Serialization;

[Serializable] // Potrebno za BinaryFormatter
public class Person
{
    public string Name { get; set; }

    [NonSerialized] // Ovo polje će biti preskočeno tokom serializacije
    public int Age;

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