Τι είναι το transient στο πλαίσιο του προγραμματισμού σε C#;
sobes.tech AI
Απάντηση από AI
Στο πλαίσιο της C#, το transient εμφανίζεται συχνότερα κατά την εργασία με μηχανισμούς σειριοποίησης και αποσειριοποίησης αντικειμένων.
Ο τροποποιητής [NonSerialized] (ή [IgnoreDataMember] κατά τη χρήση του DataContractSerializer, ή το χαρακτηριστικό [JsonIgnore] κατά τη χρήση του Json.NET) χρησιμοποιείται για να σηματοδοτήσει ένα πεδίο ή ιδιότητα μιας κλάσης που δεν πρέπει να συμπεριλαμβάνεται στη ροή δεδομένων κατά τη σειριοποίηση του αντικειμένου.
Με άλλα λόγια, ένα τέτοιο πεδίο ή ιδιότητα είναι "παροδικό" ή "προσωρινό" και η τιμή του δεν αποθηκεύεται κατά τη μετατροπή του αντικειμένου σε μια διαδοχική μορφή (π.χ., XML, JSON, δυαδική). Κατά την επακόλουθη αποσειριοποίηση του αντικειμένου, αυτά τα πεδία/ιδιότητες θα αρχικοποιούνται με τις προεπιλεγμένες τιμές του τύπου τους (π.χ., null για αναφορικούς τύπους, 0 για αριθμητικούς, false για bool).
Βασικά παραδείγματα χρήσης:
- Κρυμμένα ή παράγωγα δεδομένα που μπορούν να υπολογιστούν ξανά μετά την αποσειριοποίηση.
- Αναφορές σε πόρους του λειτουργικού συστήματος ή εξωτερικά αντικείμενα που δεν μπορούν να σειριοποιηθούν.
- Προσωρινές καταστάσεις ή ενδιάμεσοι υπολογισμοί.
Παράδειγμα με [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;
}
}