Sobes.tech
Middle

Ի՞նչ է transient-ը C# ծրագրավորման համատեքստում։

sobes.tech AI

Պատասխան AI-ից

C# կոնտեքստում, transient ամենից հաճախ հանդիպում է օբյեկտների սերիալիզացիայի և դեսերիալիզացիայի մեխանիզմների հետ աշխատելիս:

[NonSerialized] մոդիֆիկատորը (կամ [IgnoreDataMember] DataContractSerializer օգտագործելիս, կամ [JsonIgnore] Json.NET օգտագործելիս) օգտագործվում է նշելու համար՝ դասի դաշտը կամ հատկությունը, որը չպետք է ներառվի տվյալների հոսքում օբյեկտի սերիալիզացիայի ժամանակ:

Այլ կերպ ասած, նման դաշտը կամ հատկությունը "անցավոր" կամ "ժամանակավոր" է, և նրա արժեքը չի պահպանվում օբյեկտը հաջորդական ֆորմատին (օրինակ՝ XML, JSON, բինար) փոխակերպելիս: Օբյեկտի հետագա դեսերիալիզացիայի ժամանակ, այդ դաշտերը/տարբերակները կհիմնավորվեն իրենց տիպի համար նախնական արժեքներով (օրինակ՝ null հղումային տիպերի համար, 0 թվային, false բուլյան):

Հիմնական օգտագործման օրինակներ՝

  • Կեշավորված կամ արտադրված տվյալներ, որոնք կարող են վերականգնվել դեսերիալիզացիայից հետո:
  • Հղումներ օպերացիոն համակարգի ռեսուրսներին կամ արտաքին օբյեկտներին, որոնք հնարավոր չէ սերիալիզացնել:
  • Ժամանակավոր վիճակներ կամ միջնորդ հաշվարկներ:

[NonSerialized] օրինակով՝

using System;
using System.Runtime.Serialization;

[Serializable] // BinaryFormatter-ի համար անհրաժեշտ
public class Person
{
    public string Name { get; set; }

    [NonSerialized] // Այս դաշտը կանցնվի սերիալիզացիայի ժամանակ
    public int Age;

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