0Pricing
C# Academy · Leçon

Types de valeurs pouvant être nulles

int? et la structure Nullable.

Types de valeurs pouvant être nulles est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Pourquoi utiliser des types valeur nullables ?

Les types valeur tels que int, bool et DateTime contiennent toujours une valeur. Un int vaut 0 par défaut, jamais « aucune valeur ».

Parfois, vous devez représenter des données manquantes, par exemple un champ de sondage sans réponse ou une colonne vide d'une base de données. Les types valeur nullables permettent également à un type valeur de contenir null.

Déclarer avec int?

Ajoutez un ? après un type valeur pour le rendre nullable. int? peut contenir n'importe quel entier ou null.

C'est la façon la plus courante d'écrire des types valeur nullables dans le code C# quotidien.

int? age = null;
int count = 5;
age = count;
System.Console.WriteLine(age);

Nullable<T> en coulisses

La syntaxe ? est une forme abrégée. int? est exactement le même type que Nullable<int>.

Nullable<T> est une structure qui encapsule un type valeur et ajoute un indicateur signalant si une valeur est présente.

Nullable<int> a = 10;
int? b = 10;
System.Console.WriteLine(a == b);

HasValue et valeur

Toute valeur nullable expose deux propriétés. HasValue vaut true lorsqu'une valeur est présente, et Value renvoie la valeur sous-jacente.

Lire Value lorsque HasValue vaut false lève une InvalidOperationException ; vérifiez donc d'abord.

int? score = 42;
if (score.HasValue)
{
    System.Console.WriteLine(score.Value);
}

Exemple complet

Voici un programme complet. Il affecte une valeur, vérifie HasValue et affiche le résultat.

Exécutez-le pour voir comment se comporte une valeur nullable lorsqu'elle contient effectivement des données.

using System;

class Program
{
    static void Main()
    {
        int? temperature = 21;
        if (temperature.HasValue)
            Console.WriteLine("Temp: " + temperature.Value);
        else
            Console.WriteLine("No reading");
    }
}

Lorsqu'il est nul

Attribuer null fait renvoyer false à HasValue. La branche else s'exécute alors.

Ce modèle permet de gérer en toute sécurité les lectures facultatives sans provoquer de plantage.

using System;

class Program
{
    static void Main()
    {
        int? temperature = null;
        if (temperature.HasValue)
            Console.WriteLine(temperature.Value);
        else
            Console.WriteLine("No reading");
    }
}

GetValueOrDefault

GetValueOrDefault() renvoie la valeur si elle est présente, sinon la valeur par défaut de ce type (par exemple 0 pour int).

Vous pouvez également fournir votre propre valeur de repli : GetValueOrDefault(100) renvoie 100 lorsque la valeur est nulle.

int? quantity = null;
int result = quantity.GetValueOrDefault(100);
System.Console.WriteLine(result);

Conversion implicite vers un type pouvant être nul

Un int ordinaire est automatiquement converti en int?, car toute valeur ordinaire est également une valeur valide pouvant être nulle.

L'inverse n'est pas automatique : passer de int? à int nécessite une conversion explicite ou une valeur de repli, puisque la valeur pouvant être nulle peut être nulle.

int plain = 7;
int? wrapped = plain;
int back = (int)wrapped;
System.Console.WriteLine(back);

Types valeur pouvant être nuls

N'importe quel type valeur convient : bool?, double?, DateTime?, et même des structures personnalisées.

Un bool? possède trois états : true, false et null, ce qui est utile pour les questions oui/non restées sans réponse.

bool? agreed = null;
double? price = 9.99;
System.Console.WriteLine(agreed.HasValue);
System.Console.WriteLine(price.Value);

Les types référence peuvent déjà être nuls

Les classes comme string et les tableaux peuvent déjà être null, elles n'ont donc pas besoin de l'enveloppe Nullable<T>.

Le ? appliqué aux types référence (comme string?) a une signification différente : il s'agit d'une annotation indiquant qu'une référence peut être nulle, et non de la structure Nullable<T>.

Comparer des valeurs pouvant être nulles

Les comparaisons fonctionnent, mais souvenez-vous que la valeur nulle se comporte de manière particulière. Deux valeurs nulles sont égales, et toute comparaison d'ordre impliquant une valeur nulle renvoie false.

Ainsi, null < 5 vaut false, tout comme null > 5.

int? x = null;
System.Console.WriteLine(x < 5);
System.Console.WriteLine(x == null);

Vérification rapide

Vérifiez votre compréhension des types valeur pouvant être nuls.

Récapitulatif

Les types valeur pouvant être nuls permettent aussi aux types valeur de contenir null. Écrivez-les sous la forme int?, qui équivaut à Nullable<int>.

Utilisez HasValue pour vérifier la présence d'une valeur, Value pour la lire (uniquement lorsqu'elle est présente) et GetValueOrDefault() pour disposer d'une valeur de repli sûre. Les types référence peuvent déjà être nuls par eux-mêmes.

Questions Fréquemment Posées

La leçon « Types de valeurs pouvant être nulles » est-elle gratuite ?

Oui — le texte complet de « Types de valeurs pouvant être nulles » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Types de valeurs pouvant être nulles » ?

int? et la structure Nullable. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Types de valeurs pouvant être nulles » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Types de valeurs pouvant être nulles
  2. Opérateur conditionnel de nullité
  3. Opérateurs de coalescence de nullité
  4. Se prémunir contre les valeurs nulles
← Retour à C# Academy