Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
Nullable<T>, structure
Représente un objet dont le type sous-jacent est un type valeur qui peut également être assigné null comme un type référence.
Assembly : mscorlib (dans mscorlib.dll)
Le type Nullable<T> expose les membres suivants.
| Nom | Description | |
|---|---|---|
|
Nullable<T> | Initialise une nouvelle instance de la structure Nullable<T> avec la valeur spécifiée. |
| Nom | Description | |
|---|---|---|
|
Equals | Indique si l'objet Nullable<T> en cours est égal à un objet spécifié. (Substitue ValueType.Equals(Object).) |
|
Finalize | Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.) |
|
GetHashCode | Récupère le code de hachage de l'objet retourné par la propriété Value. (Substitue ValueType.GetHashCode().) |
|
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) |
|
GetValueOrDefault() | Récupère la valeur de l'objet Nullable<T> actuel ou la valeur par défaut de l'objet. |
|
GetValueOrDefault(T) | Récupère la valeur de l'objet Nullable<T> actuel ou la valeur par défaut spécifiée. |
|
MemberwiseClone | Crée une copie superficielle de l'objet Object actif. (Hérité de Object.) |
|
ToString | Retourne la représentation textuelle de la valeur de l'objet Nullable<T> actuel. (Substitue ValueType.ToString().) |
| Nom | Description | |
|---|---|---|
|
Explicit(Nullable<T> to T) | Retourne une valeur Nullable<T> spécifiée. |
|
Implicit(T to Nullable<T>) | Crée un objet Nullable<T> initialisé à une valeur spécifiée. |
Un type est dit nullable s'il est possible de lui assigner une valeur ou de lui assigner null, ce qui signifie qu'il n'a aucune valeur du tout. Par conséquent, un type Nullable peut soit exprimer une valeur soit exprimer qu'aucune valeur n'existe. Par exemple, un type référence, tel que String est nullable, alors qu'un type valeur, tel que Int32 ne l'est pas. Un type valeur ne peut pas être Nullable parce qu'il a une capacité suffisante pour exprimer uniquement les valeurs appropriées pour ce type ; il n'a pas la capacité supplémentaire requise pour exprimer une valeur Nul.
La structure Nullable<T> prend en charge l'utilisation unique d'un type valeur comme type Nullable parce que les types référence sont Nullables de conception.
La classe Nullable fournit une prise en charge complémentaire de la structure Nullable<T>. La classe Nullable permet d'obtenir le type sous-jacent d'un type Nullable, et les opérations de comparaison et d'égalité sur les paires de types nullables dont le type valeur sous-jacent ne prend pas en charge les opérations de comparaison générique et d'égalité.
Scénario
Utiliser des types Nullables pour représenter des choses qui existent ou n'existent pas, selon les circonstances. Par exemple, un attribut facultatif d'une balise HTML peut exister dans une balise, mais pas dans une autre ou une colonne nullable d'une table de base de données peut exister dans une ligne de la table, mais pas dans une autre.
Vous pouvez représenter l'attribut ou la colonne sous la forme d'un champ dans une classe et vous pouvez définir le champ comme un type valeur. Le champ peut contenir toutes les valeurs valides pour l'attribut ou la colonne, mais il ne peut pas contenir de valeur supplémentaire qui signifie que l'attribut ou la colonne n'existe pas. Dans ce cas, définissez le champ comme étant un type Nullable au lieu d'un type valeur.
Propriétés fondamentales
Les deux membres fondamentaux de la structure Nullable<T> sont les propriétés HasValue et Value. Si la propriété HasValue d'un objet Nullable<T> est true, la valeur de l'objet est accessible grâce à la propriété Value. Si la propriété HasValue est false, la valeur de l'objet est indéfinie et une tentative d'accès à la propriété Value lève une InvalidOperationException.
Boxing et unboxing
Lorsqu'un type Nullable fait l'objet d'un boxing, le Common Language Runtime effectue automatiquement un boxing de la valeur sous-jacente de l'objet Nullable<T>, et non de l'objet Nullable<T> lui-même. Autrement dit, si la propriété HasValue est true, le contenu de la propriété Value fait l'objet d'un boxing. Lorsque la valeur sous-jacente d'un type Nullable fait l'objet d'un unboxing, le Common Language Runtime crée une structure Nullable<T> initialisée à la valeur sous-jacente.
Si la propriété HasValue d'un type Nullable est false, le résultat d'une opération de boxing est null. Par conséquent, si un type Nullable ayant fait l'objet d'un boxing est passé à une méthode qui attend un argument objet, cette méthode doit être prête à gérer le cas où l'argument est null. Lorsque null fait l'objet d'un unboxing dans un type Nullable, le Common Language Runtime crée une nouvelle structure Nullable<T> et initialise sa propriété HasValue avec false.
L'exemple de code suivant définit trois lignes d'une table dans la base de données exemple Pubs de Microsoft. La table contient deux colonnes qui ne sont pas nullables et deux colonnes qui le sont.
// This code example demonstrates the Nullable<T> class. // The code example defines a database table in which two columns // are nullable. In the application, an array of rows is created // and initialized. The table rows could subsequently be // written to a database. using System; class Sample { // Define the "titleAuthor" table of the Microsoft "pubs" database. public struct titleAuthor { // Author ID; format ###-##-#### public string au_id; // Title ID; format AA#### public string title_id; // Author ORD is nullable. public short? au_ord; // Royalty Percent is nullable. public int? royaltyper; } public static void Main() { // Declare and initialize the titleAuthor array. titleAuthor[] ta = new titleAuthor[3]; ta[0].au_id = "712-32-1176"; ta[0].title_id = "PS3333"; ta[0].au_ord = 1; ta[0].royaltyper = 100; ta[1].au_id = "213-46-8915"; ta[1].title_id = "BU1032"; ta[1].au_ord = null; ta[1].royaltyper = null; ta[2].au_id = "672-71-3249"; ta[2].title_id = "TC7777"; ta[2].au_ord = null; ta[2].royaltyper = 40; // Display the values of the titleAuthor array elements, and // display a legend. Display("Title Authors Table", ta); Console.WriteLine("Legend:"); Console.WriteLine("An Author ORD of -1 means no value is defined."); Console.WriteLine("A Royalty % of 0 means no value is defined."); } // Display the values of the titleAuthor array elements. public static void Display(string dspTitle, titleAuthor[] dspAllTitleAuthors) { Console.WriteLine("*** {0} ***", dspTitle); foreach (titleAuthor dspTA in dspAllTitleAuthors) { Console.WriteLine("Author ID ... {0}", dspTA.au_id); Console.WriteLine("Title ID .... {0}", dspTA.title_id); Console.WriteLine("Author ORD .. {0}", dspTA.au_ord ?? -1); Console.WriteLine("Royalty % ... {0}", dspTA.royaltyper ?? 0); Console.WriteLine(); } } } /* This code example produces the following results: *** Title Authors Table *** Author ID ... 712-32-1176 Title ID .... PS3333 Author ORD .. 1 Royalty % ... 100 Author ID ... 213-46-8915 Title ID .... BU1032 Author ORD .. -1 Royalty % ... 0 Author ID ... 672-71-3249 Title ID .... TC7777 Author ORD .. -1 Royalty % ... 40 Legend: An Author ORD of -1 means no value is defined. A Royalty % of 0 means no value is defined. */
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.