Ի՞նչ է 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;
}
}