Maison  >  Article  >  développement back-end  >  C# Nullable

C# Nullable

WBOY
WBOYoriginal
2024-09-03 15:16:25934parcourir

Les variables ne peuvent pas se voir attribuer une valeur nulle en C#. Pour surmonter ce problème, une fonctionnalité spéciale est fournie par C#, qui attribue une valeur nulle à une variable appelée type nullable, et elle ne fonctionne pas avec le type référence car une valeur nulle la valeur est déjà présente, elle ne fonctionne qu'avec le type nullable qui est une instance de System.Nullablestruct où T représente les types de valeur non nullables tels que le type booléen, le type entier, le type à virgule flottante, etc.

Syntaxe :

Nullable<data_type> variable_name = null;

La syntaxe ci-dessus représente le type de données nullable en C#. Le mot-clé nullable représente le type nullable qui est une instance de System.Nullablestruct où T représente les types de valeur non nullables tels que le type booléen, le type entier, le type à virgule flottante, etc. Le type de données représente le type de données de la variable, où variable_name représente le nom de la variable et une valeur nulle lui est attribuée.

Il existe également un raccourci vers cette syntaxe qui implique ? opérateur ainsi que le type de données comme mentionné ci-dessous :

data_type? variable_name = null;

La syntaxe ci-dessus représente le type de données nullable en C#. Le ? Le symbole de marque représente le type nullable. Le type de données représente le type de données de la variable, où variable_name représente le nom de la variable et une valeur nulle lui est attribuée.

Caractéristiques du type nullable en C#

  • Les valeurs du type nullable ne sont pas accessibles directement. La méthode GetValueOrDefault() est utilisée pour extraire la valeur attribuée si elle n'est pas affectée à null, et si elle est nulle, la valeur par défaut est renvoyée, qui est zéro.
  • Une valeur nulle peut être attribuée à une variable à l'aide d'un type nullable sans avoir besoin de créer un type nullable basé sur le type référence.
  • Les valeurs peuvent être attribuées à des types nullables.
  • Nullable HasValue et Nullable peuvent être utilisés pour vérifier la valeur. Si une valeur est affectée à un objet, true est renvoyé et false est renvoyé si null est attribué à l'objet. Si aucune valeur n'est attribuée à l'objet, une erreur de compilation est générée.
  • == et ! les opérateurs peuvent être utilisés avec des types nullables.
  • Si null est attribué au type nullable, la méthode GetValueOrDefault(T) donne la valeur attribuée ou la valeur par défaut donnée par défaut.
  • L'opérateur de fusion nulle (??) peut également être utilisé pour attribuer une valeur à la valeur du type nullable.
  • Les types Nullable imbriqués ne sont pas pris en charge par le type Nullable.
  • Un type nullable ne prend pas en charge le type var. Le compilateur donne une erreur au moment de la compilation si nullable est utilisé avec var.

Avantages du type nullable en C#

  • Le type Nullable est utilisé dans les applications de base de données. Si une colonne d'une base de données nécessite des valeurs nulles, un type nullable peut être utilisé pour attribuer des valeurs nulles à la colonne.
  • Les valeurs non définies peuvent être représentées à l'aide de types nullables.
  • Une valeur nulle peut être stockée en utilisant un type nullable plutôt qu'en utilisant un type référence.

Classe d'assistance nullable

La valeur de null est inférieure à n'importe quelle valeur ; par conséquent, les opérateurs de comparaison ne peuvent pas être utilisés avec null, nous utilisons donc une classe statique nullable. Elle est considérée comme une classe d'assistance pour les types Nullable. La classe statique nullable fournit la méthode GetUnderlyingType. L'argument de type des types nullables est renvoyé par cette méthode.

Fonctionnement du type nullable en C#

Les types de données primitifs sont des types de valeur, par exemple des nombres. Les types de valeur sont stockés dans la pile et initialisés implicitement à leurs valeurs par défaut par le framework .NET, même s'ils ne sont pas explicitement initialisés au moment de leur définition. Par exemple, une valeur entière est initialisée à zéro par défaut ; une valeur booléenne est initialisée à false par défaut et ainsi de suite. De même, tous les types de valeur représentent des valeurs par défaut. Aucun d'entre eux ne peut représenter des valeurs nulles qui sont très importantes dans les applications de bases de données et que la représentation de null est importante dans de telles applications. Toute valeur choisie pour représenter la valeur nulle ne peut pas tomber dans la plage de valeurs autorisées pour le type de données de la valeur. Par exemple, si nous choisissons -1 pour représenter null pour un type valeur, -1 peut ne pas être la valeur autorisée pour ce type de données. Il faut également s'assurer que si une certaine valeur est choisie pour représenter la valeur nulle dans une application, cette valeur ne doit pas être utilisée ailleurs à d'autres fins dans les applications. Pour résoudre ce problème, le type nullable a été fourni par C# 2.0. La structure du système. Nullable est le suivant, qui peut être utilisé pour définir des types nullables :

Code :

namespace System
{
public struct Nullable : System.IComparable, System.INullableValue
{
public Nullable(T value);
public static explicit operator T(T? value);
public static implicit operator T?(T value);
public T Value { get; }
public bool HasValue { get; }
public T GetValueOrDefault();
}
}

Ici, T représente le type de valeur et la structure accepte un paramètre. Toute valeur peut être définie comme un type nullable en utilisant la syntaxe.

Syntaxe :

System.Nullable<data_type> variable_name = null;

Exemples de C# Nullable

Voici les exemples donnés ci-dessous pour C# Nullable.

Exemple n°1

Programme C# pour illustrer les types nullables lorsqu'aucune valeur n'est attribuée aux variables

Code:

using System;
public class Geeks {
//Defining Main Method
public static void Main(string[] args)
{
// Nullable type is defined
Nullable<int> a = null;
// We use the method GetValueOrDefault(), the default value is 0
Console.WriteLine(a.GetValueOrDefault());
// Nullable type is defined
int? b = null;
//We use the method GetValueOrDefault(), the default value is 0
Console.WriteLine(b.GetValueOrDefault());
// non-nullable is defined using nullable type syntax
int? a1 = 200;
// We use the method GetValueOrDefault(), the default value is 0 but the value that is assigned to the variable is returned
Console.WriteLine(a1.GetValueOrDefault());
// non-nullable is defined using nullable type syntax
Nullable<int> b1 = 10;
//  We use the method GetValueOrDefault(), the default value is 0 but the value that is assigned to the variable is returned
Console.WriteLine(b1.GetValueOrDefault());
}
}

The output of the above code is shown in the snapshot below:

Output:

C# Nullable

Example #2

C# program using nullable type to illustrate the use of nullable.HasValue method.

Code:

using System;
public class GFG {
//Defining Main Method
public static void Main()
{
// defining the variable m as a nullable type
Nullable<int> m = 100;
// the value of the variable m is checked
Console.WriteLine(m.HasValue);
// defining the variable n as a nullable type and assigned a value to it
Nullable<int> n = null;
// check the value of object
Console.WriteLine(n.HasValue);
}
}

The output of the above code is shown in the snapshot below:

Output:

C# Nullable

Conclusion

In this tutorial, we understand the concept of nullable type in C# through definition and then understand the working of nullable type in C#. Then we understand different C# programs using nullable type and their working with their output snapshots included with the programs’ results.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Horodatage à ce jour C#Article suivant:Horodatage à ce jour C#