AIDE .NET

C# Nullable Types (How It Works For Developers) (Les types annulables en C# (Comment cela fonctionne pour les développeurs))

Regan Pun
Regan Pun
octobre 24, 2024
Partager:

Lorsque vous travaillez avec C#, vous devez souvent manipulervaleurs nullesen C#, les types nuls sont plus faciles à utiliser, en particulier avec les types de référence. Les types annulables en C# permettent de représenter les valeurs non définies ou absentes pour les types de valeur. Ce guide couvre l'essentiel des types nullables en C#, leurs utilisations pratiques et leur fonctionnement dans différents scénarios. Nous explorerons lesIronPDF vous trouverez de plus amples informations à ce sujet dans la suite de l'article.

Types annulables dans C# ;

Par défaut, les types de valeurs en C#(par exemple, int, bool, DateTime) il n'est pas possible d'attribuer des valeurs nulles aux mots-clés. Pour remédier à cette limitation, C# introduit les types de valeur annulables, ce qui vous permet d'attribuer la valeur null aux types de valeur. Les types nullables sont particulièrement utiles lorsqu'il s'agit de représenter l'absence d'une valeur valide.

Déclarer des types annulables

Pour déclarer un type nullable en C#, vous utilisez la syntaxe suivante :

// Nullable type variable value
int? nullableInt = null;
// Nullable type variable value
int? nullableInt = null;

Ici, int ? est l'abréviation de Nullable. La variable nullableInt peut contenir soit une valeur int, soit null.

Vérification de la nullité

Pour vérifier si une variable de type nullable a une valeur ou non, vous pouvez utiliser la propriété HasValue ou comparer la variable directement avec null. Par exemple :

if (nullableInt.HasValue)
{
    Console.WriteLine("Value: " + nullableInt.Value);
}
else
{
    Console.WriteLine("No value assigned.");
}
if (nullableInt.HasValue)
{
    Console.WriteLine("Value: " + nullableInt.Value);
}
else
{
    Console.WriteLine("No value assigned.");
}

Vous pouvez également utiliser l'opérateur de coalescence null(? ?) pour fournir une valeur par défaut lorsque le type nullable est null :

int result = nullableInt ?? 0;
Console.WriteLine("Result: " + result);
int result = nullableInt ?? 0;
Console.WriteLine("Result: " + result);

Si nullableInt est nul, la valeur par défaut de 0 sera attribuée au résultat.

Types de valeurs annulables et types de références annulables

En C#, les types de valeurs(tels que int, bool et double) diffèrent des types de référence(comme chaîne de caractères, objet). Les types de valeur nullables permettent aux types de valeur de représenter null, tandis que les types de référence nullables permettent aux types de référence d'être non nullables par défaut, réduisant ainsi le risque d'exceptions de référence nulle.

Types de valeurs nulles

Un type de valeur nullable permet à un type de valeur de prendre une valeur nulle. Pour déclarer un type de valeur nullable, ajoutez un point d'interrogation ? au type de données :

double? nullableDouble = null;
double? nullableDouble = null;

Dans cet exemple, nullableDouble peut contenir une valeur double ou null.

Types de référence annulables

Les types de référence nullables ont été introduits dans C# 8.0. Vous activez les types de référence nullables au niveau du projet ou en ajoutant la directive #nullable enable au début de votre fichier de code. Lorsque les types de référence nullables sont activés, les types de référence doivent être explicitement marqués comme nullables à l'aide de la directive ?

#nullable enable
string? nullableString = null;
#nullable enable
string? nullableString = null;

Ici, nullableString est autorisé à être null. Si vous déclarez un type de référence non annulable sans le ?, le compilateur produira des avertissements s'il détecte des affectations potentielles de nullité.

Activation des types de référence annulables

Pour activer globalement les types de référence nullables dans un projet, ajoutez la ligne suivante à votre fichier .csproj :

<Nullable>enable</Nullable>
<Nullable>enable</Nullable>

Une fois activé, le compilateur traitera les types de référence comme non annulables par défaut. Cette fonctionnalité est particulièrement utile pour détecter les problèmes liés aux références nulles au moment de la compilation plutôt qu'au moment de l'exécution.

Exemples pratiques

Explorons quelques exemples pratiques pour consolider votre compréhension des types nullables.

Exemple 1 : Type Nullable avec types de valeurs

Dans cet exemple, nous utiliserons un type nullable avec int :

class Program
{
    static void Main(string[] args)
    {
        int? nullableInt = null;
        int b = nullableInt ?? 10; // Use null coalescing operator
        Console.WriteLine("b: " + b);
        if (nullableInt.HasValue)
        {
            Console.WriteLine("nullableInt has value: " + nullableInt.Value);
        }
        else
        {
            Console.WriteLine("nullableInt is null");
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        int? nullableInt = null;
        int b = nullableInt ?? 10; // Use null coalescing operator
        Console.WriteLine("b: " + b);
        if (nullableInt.HasValue)
        {
            Console.WriteLine("nullableInt has value: " + nullableInt.Value);
        }
        else
        {
            Console.WriteLine("nullableInt is null");
        }
    }
}

Ici, nullableInt est une variable de type nullable de int. Si nullableInt est null, b obtient la valeur 10 grâce à l'opérateur de coalescence null. Sinon, b prend la valeur de nullableInt.

Exemple 2 : Types de référence annulables

Voyons maintenant comment fonctionnent les types de référence nullables :

#nullable enable
class Program
{
    static void Main()
    {
        string? nullableString = null;
        string nonNullableString = "Hello";
        Console.WriteLine(nullableString?.Length ?? 0); // Use null coalescing operator
        Console.WriteLine(nonNullableString.Length);
    }
}
#nullable enable
class Program
{
    static void Main()
    {
        string? nullableString = null;
        string nonNullableString = "Hello";
        Console.WriteLine(nullableString?.Length ?? 0); // Use null coalescing operator
        Console.WriteLine(nonNullableString.Length);
    }
}

Dans le code ci-dessus, nullableString peut être null, et l'opérateur de coalescence null garantit que s'il est null, la longueur de la chaîne est par défaut égale à 0.

Exemple 3 : Types Nullables imbriqués

C# vous permet de déclarer des types imbriqués nullables. Par exemple, en C#, vous pouvez déclarer des types nullables imbriqués :

int?? nestedNullableInt = null;
int?? nestedNullableInt = null;

Bien que les types nullables imbriqués puissent sembler redondants, ils sont syntaxiquement valides en C#. Cependant, dans la pratique, les types nullables imbriqués n'apportent aucune fonctionnalité supplémentaire et sont rarement utilisés.

Opérateur de coalescence nulle ( ??)

L'opérateur de coalescence nulle(? ?) est fréquemment utilisé avec les types nullables pour fournir une valeur par défaut lorsque le type nullable est nul. Cet opérateur simplifie le code en évitant les vérifications explicites de type "if-else".

int? nullableValue = null;
int defaultValue = nullableValue ?? -1;
int? nullableValue = null;
int defaultValue = nullableValue ?? -1;

Dans cet exemple, si nullableValue est null, defaultValue se verra attribuer -1. Dans le cas contraire, defaultValue prendra la valeur de nullableValue.

Erreurs de compilation et types annulables

Lorsque les types de référence nullables sont activés, C# produit des avertissements et des erreurs lors de la compilation lorsqu'il détecte des problèmes potentiels avec les affectations null. Ces erreurs de compilation permettent de détecter les problèmes à un stade précoce, ce qui rend votre code plus robuste.

Prenons l'exemple suivant :

string? nullableString = null;
string nonNullableString = nullableString; // Compiler warning
string? nullableString = null;
string nonNullableString = nullableString; // Compiler warning

Dans ce cas, l'affectation de nullableString à nonNullableString produit un avertissement du compilateur car nullableString peut être null, et son affectation à un type non nullable pourrait entraîner des exceptions à l'exécution.

Utiliser les types annulables avec IronPDF

Types annulables en C#(Comment cela fonctionne-t-il pour les développeurs ?) : Figure 1 - IronPDF : Bibliothèque PDF C#

IronPDF est une bibliothèque PDF C# conçue pour aider les développeurs à créer, modifier et manipuler des fichiers PDF directement à partir d'applications .NET. Vous pouvezconvertir HTML en PDFla traduction doit également permettre de créer des rapports, voire de traiter des structures de documents complexes.

Les types annulables sont particulièrement utiles dans les scénarios de génération de rapports dynamiques, par exemple lorsque vous générez un PDF pour un comptable avec des données financières incomplètes. L'utilisation de types nullables permet de gérer les champs facultatifs, d'éviter les exceptions et de fournir des valeurs par défaut

using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        int? optionalIncome = null;  // Nullable type
        string? clientName = "Iron Dev";  // Nullable reference type
        var renderer = new ChromePdfRenderer();
        string htmlContent = $@"
            <h1>Financial Report</h1>
            <p>Client Name: {clientName ?? "Unknown"}</p>
            <p>Income: {optionalIncome?.ToString() ?? "Data not available"}</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("FinancialReport.pdf");
        Console.WriteLine("PDF Generated Successfully.");
    }
}
using IronPdf;
class Program
{
    static void Main(string[] args)
    {
        int? optionalIncome = null;  // Nullable type
        string? clientName = "Iron Dev";  // Nullable reference type
        var renderer = new ChromePdfRenderer();
        string htmlContent = $@"
            <h1>Financial Report</h1>
            <p>Client Name: {clientName ?? "Unknown"}</p>
            <p>Income: {optionalIncome?.ToString() ?? "Data not available"}</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("FinancialReport.pdf");
        Console.WriteLine("PDF Generated Successfully.");
    }
}

Types annulables en C#(Comment cela fonctionne-t-il pour les développeurs ?) (Les types annulables en C# (Comment cela fonctionne pour les développeurs) : Figure 2 - Exemple de sortie de code

Dans ce code, les types nullables(int ? et string ?) ces outils permettent de traiter les données manquantes en toute sécurité. L'opérateur de coalescence nulle(? ?) l'utilisation d'un logiciel de traduction permet de s'assurer qu'en cas de données manquantes, une valeur par défaut est utilisée dans le PDF.

Conclusion

Types annulables en C#(Comment cela fonctionne-t-il pour les développeurs ?) : Figure 3 - Page de licence IronPDF

Les types nullables dans C# constituent un outil puissant pour gérer les valeurs nulles dans les types de valeur et les types de référence. En utilisant les types nullables, vous pouvez éviter les exceptions de référence nulle et améliorer la robustesse de votre code. N'oubliez pas d'activer les types de référence nullables dans les nouveaux projets pour bénéficier de la vérification des erreurs au moment de la compilation, et d'utiliser l'opérateur de coalescence null(? ?) pour simplifier votre code lorsqu'il s'agit de types nullables.

IronPDF offre un service deessai gratuit la traduction doit rester professionnelle, tout en préservant l'exactitude technique et en expliquant les caractéristiques et les avantages de ces outils de développement. Sans coût initial, vous pouvez tâter le terrain et voir comment ces outils s'intègrent dans votre processus de développement. Une fois que vous êtes prêt à aller de l'avant, les licences commencent à partir de $749.

Regan Pun
Ingénieur logiciel
Regan est diplômé de l'université de Reading, où il a obtenu une licence en ingénierie électronique. Avant de rejoindre Iron Software, il s'était concentré sur une seule tâche. Ce qu'il apprécie le plus chez Iron Software, c'est la diversité des tâches qu'il peut accomplir, qu'il s'agisse d'apporter une valeur ajoutée aux ventes, à l'assistance technique, au développement de produits ou à la commercialisation. Il aime comprendre comment les développeurs utilisent la bibliothèque d'Iron Software et utiliser ces connaissances pour améliorer continuellement la documentation et développer les produits.
< PRÉCÉDENT
C# ConfigureAwait (Comment ça marche pour les développeurs)
SUIVANT >
Conventions d'appellation en C# (Comment ça marche pour les développeurs)