რა არის 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;
}
}