Was ist transient im Kontext der Programmierung in C#?
sobes.tech KI
Antwort von AI
Im Kontext von C# tritt transient am häufigsten bei der Arbeit mit Mechanismen der Serialisierung und Deserialisierung von Objekten auf.
Der Modifikator [NonSerialized] (oder [IgnoreDataMember] bei Verwendung von DataContractSerializer, oder das Attribut [JsonIgnore] bei Verwendung von Json.NET) wird verwendet, um ein Feld oder eine Eigenschaft einer Klasse zu markieren, die nicht in den Datenstrom bei der Serialisierung des Objekts eingeschlossen werden soll.
Mit anderen Worten, ein solches Feld oder eine solche Eigenschaft ist "transient" oder "vorübergehend" und sein Wert wird beim Konvertieren des Objekts in ein sequenzielles Format (z.B. XML, JSON, binär) nicht gespeichert. Bei der späteren Deserialisierung des Objekts werden diese Felder/Eigenschaften mit den Standardwerten für ihren Typ initialisiert (z.B. null für Referenztypen, 0 für numerische, false für boolesch).
Hauptbeispiele für die Verwendung:
- Zwischengespeicherte oder abgeleitete Daten, die nach der Deserialisierung neu berechnet werden können.
- Verweise auf Betriebssystemressourcen oder externe Objekte, die nicht serialisiert werden können.
- Vorübergehende Zustände oder Zwischenberechnungen.
Beispiel mit [NonSerialized]:
using System;
using System.Runtime.Serialization;
[Serializable] // Erforderlich für BinaryFormatter
public class Person
{
public string Name { get; set; }
[NonSerialized] // Dieses Feld wird bei der Serialisierung übersprungen
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}