Sobes.tech
Middle

Qu'est-ce que transient dans le contexte de la programmation en C#?

sobes.tech IA

Réponse de l'IA

Dans le contexte de C#, transient apparaît le plus souvent lors de la manipulation de mécanismes de sérialisation et de désérialisation d'objets.

Le modificateur [NonSerialized] (ou [IgnoreDataMember] lors de l'utilisation de DataContractSerializer, ou l'attribut [JsonIgnore] lors de l'utilisation de Json.NET) est utilisé pour marquer un champ ou une propriété de classe qui ne doit pas être inclus dans le flux de données lors de la sérialisation de l'objet.

En d'autres termes, ce champ ou propriété est "transitoire" ou "temporaire" et sa valeur n'est pas sauvegardée lors de la conversion de l'objet en un format séquentiel (par exemple, XML, JSON, binaire). Lors de la désérialisation ultérieure de l'objet, ces champs ou propriétés seront initialisés avec les valeurs par défaut pour leur type (par exemple, null pour les types de référence, 0 pour les numériques, false pour booléen).

Exemples principaux d'utilisation:

  • Données en cache ou dérivées qui peuvent être recalculées après la désérialisation.
  • Références à des ressources du système d'exploitation ou des objets externes qui ne peuvent pas être sérialisés.
  • États temporaires ou calculs intermédiaires.

Exemple avec [NonSerialized]:

using System;
using System.Runtime.Serialization;

[Serializable] // Nécessaire pour BinaryFormatter
public class Person
{
    public string Name { get; set; }

    [NonSerialized] // Ce champ sera ignoré lors de la sérialisation
    public int Age;

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