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