Sobes.tech
Middle

Kas yra transient C# programavimo kontekste?

sobes.tech AI

Atsakymas iš AI

C# kontekste transient dažniausiai pasitaiko dirbant su objektų serializacijos ir deserializacijos mechanizmais.

Modifikatorius [NonSerialized] (arba [IgnoreDataMember] naudojant DataContractSerializer, arba [JsonIgnore] naudojant Json.NET) naudojamas pažymėti klasės lauką ar savybę, kuri neturėtų būti įtraukta į duomenų srautą objekto serializacijos metu.

Kitaip tariant, toks laukas ar savybė yra "pereinamasis" arba "laikinas" ir jo reikšmė nėra išsaugoma, paverčiant objektą į seką (pavyzdžiui, XML, JSON, dvejetainį formatą). Vėlesnės deserializacijos metu šie laukai/savybės bus inicializuoti pagal numatytąsias reikšmes jų tipo (pavyzdžiui, null nuorodų tipams, 0 skaitiniams, false bool tipui).

Pagrindiniai naudojimo pavyzdžiai:

  • Kaupti arba išvestiniai duomenys, kurie gali būti apskaičiuoti po deserializacijos.
  • Nuorodos į operacinės sistemos išteklius arba išorinius objektus, kurių negalima serializuoti.
  • Laikinos būsenos arba tarpiniai skaičiavimai.

Pavyzdys su [NonSerialized]:

using System;
using System.Runtime.Serialization;

[Serializable] // Būtina BinaryFormatter
public class Person
{
    public string Name { get; set; }

    [NonSerialized] // Šis laukas bus praleistas serializacijos metu
    public int Age;

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