C# dasturlash kontekstida transient nima?
sobes.tech AI
AIdan javob
C# kontekstida, transient eng ko‘p hollarda obyektlarni serializatsiya va deserializatsiya qilish mexanizmlari bilan ishlashda uchraydi.
[NonSerialized] modifikatori (yoki DataContractSerializer bilan ishlayotganda [IgnoreDataMember], yoki Json.NET bilan ishlayotganda [JsonIgnore]) sinf maydoni yoki xususiyatini belgilash uchun ishlatiladi va bu maydon yoki xususiyat ma'lumot oqimiga kiritilmasligi kerak.
Boshqacha aytganda, bunday maydon yoki xususiyat "o‘tkinchi" yoki "vaqti-vaqti bilan" bo‘lib, uning qiymati obyektni ketma-ket formatga (masalan, XML, JSON, binar) aylantirishda saqlanmaydi. Keyinchalik obyekt deserializatsiya qilinayotganda, bu maydonlar/xususiyatlar o‘zining turiga mos keladigan standart qiymatlar bilan boshlanadi (masalan, null referens turlar uchun, 0 raqamli turlar uchun, false bool uchun).
Asosiy foydalanish misollari:
- Keshlangan yoki hosil qilingan ma'lumotlar, deserializatsiyadan so‘ng qayta hisoblanishi mumkin.
- Operatsion tizim resurslariga yoki tashqi obyektlarga bo‘ladigan havolalar, serializatsiya qilish mumkin emas.
- Vaqtinchalik holatlar yoki o‘rtacha hisoblashlar.
[NonSerialized] bilan misol:
using System;
using System.Runtime.Serialization;
[Serializable] // BinaryFormatter uchun zarur
public class Person
{
public string Name { get; set; }
[NonSerialized] // Bu maydon serializatsiya paytida o'tkazib yuboriladi
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}