Sobes.tech
Middle

C# proqramlaşdırma kontekstində transient nədir?

sobes.tech Süni İntellekt

AI-dan cavab

C# kontekstində, transient ən çox obyektlərin serializasiya və deserializasiya mexanizmləri ilə işləyərkən rast gəlinir.

[NonSerialized] modifikatoru (və ya DataContractSerializer istifadə edərkən [IgnoreDataMember], və ya Json.NET istifadə edərkən [JsonIgnore]) sinifin sahəsini və ya xüsusiyyətini işarə etmək üçün istifadə olunur və bu sahə və ya xüsusiyyət məlumat axını zamanı daxil edilməməlidir.

Başqa sözlə, belə bir sahə və ya xüsusiyyət "keçici" və ya "müvəqqəti" sayılır və onun dəyəri obyektin ardıcıl formata (məsələn, XML, JSON, ikili) çevrilməsi zamanı yadda saxlanmır. Sonrakı deserializasiya zamanı bu sahələr/xüsusiyyətlər öz növünün standart dəyərləri ilə başlanır (məsələn, null referens tiplər üçün, 0 sayısal tiplər üçün, false bool üçün).

Əsas istifadə nümunələri:

  • Keşlənmiş və ya törədilmiş məlumatlar, deserializasiya sonrası yenidən hesablanabilir.
  • Əməliyyat sistemi resurslarına və ya xarici obyektlərə istinadlar, serializasiya edilə bilməz.
  • Müvəqqəti vəziyyətlər və ya ara hesablamalar.

[NonSerialized] ilə nümunə:

using System;
using System.Runtime.Serialization;

[Serializable] // BinaryFormatter üçün tələb olunur
public class Person
{
    public string Name { get; set; }

    [NonSerialized] // Bu sahə serializasiya zamanı keçiləcək
    public int Age;

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