Čo je transient v kontexte programovania v C#?
sobes.tech AI
Odpoveď od AI
V kontexte C# sa transient najčastejšie stretávame pri práci s mechanizmami serializácie a deserializácie objektov.
Modifikátor [NonSerialized] (alebo [IgnoreDataMember] pri použití DataContractSerializer, alebo atribút [JsonIgnore] pri použití Json.NET) sa používa na označenie poľa alebo vlastnosti triedy, ktoré nemajú byť zahrnuté do toku dát počas serializácie objektu.
Inými slovami, také pole alebo vlastnosť je "prechodná" alebo "dočasná" a jej hodnota sa neukladá pri konverzii objektu do sekvenčného formátu (napríklad XML, JSON, binárny). Pri následnej deserializácii týchto objektov budú tieto polia/vlastnosti inicializované s predvolenými hodnotami pre ich typ (napríklad null pre referenčné typy, 0 pre číselné, false pre bool).
Hlavné príklady použitia:
- Uložené alebo odvodené údaje, ktoré je možné po deserializácii prepočítať.
- Odkazy na systémové zdroje alebo externé objekty, ktoré nie je možné serializovať.
- Dočasné stavy alebo medzi výpočty.
Príklad s [NonSerialized]:
using System;
using System.Runtime.Serialization;
[Serializable] // Potrebné pre BinaryFormatter
public class Person
{
public string Name { get; set; }
[NonSerialized] // Tento parameter bude preskočený pri serializácii
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}