Co je to transient v kontextu programování v C#?
sobes.tech AI
Odpověď od AI
V kontextu C# se transient nejčastěji vyskytuje při práci s mechanismy serializace a deserializace objektů.
Modifikátor [NonSerialized] (nebo [IgnoreDataMember] při použití DataContractSerializer, nebo atribut [JsonIgnore] při použití Json.NET) se používá k označení pole nebo vlastnosti třídy, které nemají být zahrnuty do datového toku při serializaci objektu.
Jinými slovy, takové pole nebo vlastnost je "přechodná" nebo "dočasná" a její hodnota není při převodu objektu do sekvenčního formátu (například XML, JSON, binárního) uložena. Při následné deserializaci objektu jsou tato pole/vlastnosti inicializována výchozími hodnotami svého typu (například null pro referenční typy, 0 pro číselné, false pro bool).
Hlavní příklady použití:
- Ukládaná nebo odvozená data, která lze po deserializaci znovu vypočítat.
- Odkazy na systémové zdroje nebo externí objekty, které nelze serializovat.
- Dočasné stavy nebo mezivýpočty.
Příklad s [NonSerialized]:
using System;
using System.Runtime.Serialization;
[Serializable] // Nutné pro BinaryFormatter
public class Person
{
public string Name { get; set; }
[NonSerialized] // Toto pole bude přeskočeno při serializaci
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}