Sobes.tech
Middle

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