Sobes.tech
Middle

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