Mis on transient C# programmeerimise kontekstis?
sobes.tech AI
Vastus AI-lt
C# kontekstis transient visbiežāk sastopams, strādājot ar objektu serializācijas un deserializācijas mehānismiem.
Modifikators [NonSerialized] (vai [IgnoreDataMember] izmantojot DataContractSerializer, vai atribūts [JsonIgnore] izmantojot Json.NET) tiek izmantots, lai atzīmētu klases lauku vai īpašību, kas nav jāiekļauj datu plūsmā objekta serializācijas laikā.
Citiem vārdiem sakot, šāds lauks vai īpašība ir "pārejoša" vai "laikina" un tās vērtība netiek saglabāta, pārvēršot objektu secīgā formātā (piemēram, XML, JSON, binārs). Nākamajā deserializācijā šie lauki/īpašības tiks inicializēti ar noklusējuma vērtībām to tipam (piemēram, null atsauces tipiem, 0 skaitliskajiem, false bool tipam).
Galvenie lietošanas piemēri:
- Kešēti vai iegūti dati, kurus var pārskaitīt pēc deserializācijas.
- Atsauces uz operētājsistēmas resursiem vai ārējiem objektiem, kurus nav iespējams serializēt.
- Laikini stāvokļi vai starpposma aprēķini.
Piemērs ar [NonSerialized]:
using System;
using System.Runtime.Serialization;
[Serializable] // Nepieciešams BinaryFormatter
public class Person
{
public string Name { get; set; }
[NonSerialized] // Šis lauks tiks izlaists serializācijas laikā
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}