IRONSOFTWAREHOME

Comment gérer la vérification des valeurs nulles pour les opérations de code-barres en C#

Curtis Chau
Curtis Chau
Updated: 9 mai 2026

IronBarcode renvoie les résultats de la numérisation sous forme de BarcodeResults collection en C# via BarcodeReader.Read. Cette méthode renvoie null si l'image d'entrée n'est pas reconnue, ou une collection vide si aucun code-barres n'est détecté. BarcodeWriter.CreateBarcode génère une exception si l'entrée est nulle, vide, ou dans un format invalide.

Les sources de numérisation réelles telles que les flux vidéo de caméras, les téléchargements de documents et les scanners d'entrepôt ne fournissent pas toujours un code-barres lisible. Accéder aux propriétés du résultat ou itérer la collection sans vérifier les valeurs nulles ou vides peut provoquer un NullReferenceException à l'exécution. Passer des chaînes invalides à l'API d'écriture peut entraîner un ArgumentException. L'utilisation de clauses de garde dans les opérations de lecture et d'écriture permet d'éviter ces exceptions en production.

Ce guide explique comment gérer les résultats nuls et vides dans les opérations de lecture et d'écriture IronBarcode en utilisant des clauses de protection, le filtrage de confiance et un modèle de validateur réutilisable.


Démarrage rapide : gérer les résultats nuls dans les opérations de code-barres

Utilisez le modèle de protection d'IronBarcode pour vérifier en toute sécurité la BarcodeResults collection avant d'accéder à toute propriété de résultat. Commencez immédiatement par cette lecture et cette vérification minimales :

  1. 1Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. 2Copiez et exécutez cet extrait de code.

    using IronBarCode;
    
    BarcodeResults results = BarcodeReader.Read("label.png");
    
    // Guard: null or empty
    if (results is null || results.Count == 0)
    {
        Console.WriteLine("No barcodes detected.");
        return;
    }
    
    Console.WriteLine(results.First().Value);
    C#
  3. 3Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronBarcode dans votre projet dès aujourd'hui avec un essai gratuit
    arrow pointer

Comment gérer les résultats de codes-barres nuls et vides ?

Il existe deux modes d'échec : BarcodeResults est nul si l'entrée n'est pas une image valide, et vide si l'image ne contient pas de codes-barres. Accéder à First, Value, ou itérer sans vérifier les deux conditions provoquera une exception à l'exécution.

Vérifiez les deux conditions avant d'entrer dans la boucle de traitement :

Entrée

Une étiquette d'expédition de code-barres Code128 (chemin réussi) et une image blanche ne contenant aucun code-barres (chemin d'échec).

Code-barres Code128 encodant SHP-20240001 utilisé comme entrée pour l'étiquette d'expédition

étiquette-d'expédition.png (chemin de réussite)

Image blanche vierge sans code-barres utilisée pour déclencher le traitement du résultat vide

blank-image.png (chemin d'échec, aucun code-barres présent)

using IronBarCode;

// BarcodeReader.Read() returns a BarcodeResults collection, not a single result
BarcodeResults results = BarcodeReader.Read("shipping-label.png");

// Null check: image was not recognized as a valid image source
// Empty check: image was valid but contained no detectable barcodes
if (results is null || results.Count == 0)
{
    // Log, return a default, or throw a domain-specific exception
    Console.WriteLine("No barcodes found in the input image.");
    return;
}

// Collection is safe to iterate; each BarcodeResult holds one decoded barcode
foreach (BarcodeResult result in results)
{
    // Guard individual result properties; partial scans or severely
    // damaged barcodes can produce results where .Value is empty or whitespace
    if (string.IsNullOrWhiteSpace(result.Value))
    {
        Console.WriteLine($"Empty value detected for {result.BarcodeType}");
        continue;
    }

    // BarcodeType identifies the symbology (Code128, QRCode, EAN8, etc.)
    Console.WriteLine($"Type: {result.BarcodeType}, Value: {result.Value}");
}

Chaque BarcodeResult fournit des propriétés de chaîne Value et Text, toutes deux renvoyant le contenu décodé du code-barres. Les codes-barres gravement endommagés ou les numérisations partielles peuvent produire des valeurs vides ou des espaces blancs. Utilisez string.IsNullOrWhiteSpace sur chaque résultat pour empêcher les valeurs vides d'atteindre les systèmes en aval.

BarcodeReaderOptions dispose également d'une propriété ConfidenceThreshold (0,0 à 1,0) qui élimine les lectures de faible qualité avant qu'elles n'atteignent la collection de résultats :

using IronBarCode;

// ConfidenceThreshold filters low-quality reads before they enter the
// BarcodeResults collection. Reads below the threshold are discarded
// during scanning, not after, so no post-filtering of the collection is needed.
var options = new BarcodeReaderOptions
{
    ConfidenceThreshold = 0.7  // range 0.0 to 1.0; lower values accept weaker signals
};

BarcodeResults results = BarcodeReader.Read("shipping-label.png", options);

// Still check for null and empty even with a threshold applied;
// an image with no barcodes returns an empty collection, not null
if (results is null || results.Count == 0)
{
    Console.WriteLine("No barcodes met the confidence threshold.");
    return;
}

foreach (var result in results)
    Console.WriteLine($"Type: {result.BarcodeType}, Value: {result.Value}");

Comment appliquer des modèles sécurisés contre les nulles à l'écriture de code-barres ?

BarcodeWriter.CreateBarcode prend une valeur de chaîne et une énumération BarcodeWriterEncoding ou BarcodeEncoding. Le passage d'une chaîne nulle ou vide provoque immédiatement une exception. Les contraintes de format s'appliquent également : EAN-8 accepte 7 à 8 chiffres numériques, UPC-A accepte 11 à 12, et Code 128 a une limite de caractères. La validation des données d'entrée avant l'appel permet d'éviter que ces exceptions ne surviennent lors de l'étape d'encodage :

using IronBarCode;

// Input may arrive from user input, a database, or an API response
string inputValue = GetValueFromUserOrDatabase(); // Could be null

// Guard: null, empty, or whitespace input cannot produce a valid barcode
if (string.IsNullOrWhiteSpace(inputValue))
{
    Console.WriteLine("Cannot generate barcode: input value is null or empty.");
    return;
}

// Guard: format-specific constraints must be satisfied before encoding
// EAN-8 accepts exactly 7 or 8 numeric digits (the 8th is the check digit)
BarcodeWriterEncoding encoding = BarcodeWriterEncoding.EAN8;
if (encoding == BarcodeWriterEncoding.EAN8 && !System.Text.RegularExpressions.Regex.IsMatch(inputValue, @"^\d{7,8}$"))
{
    Console.WriteLine("EAN-8 requires exactly 7 or 8 numeric digits.");
    return;
}

// Input is validated; CreateBarcode will not throw for null or format mismatch
GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(inputValue, encoding);
barcode.SaveAsPng("output-barcode.png");

Sortie

Une entrée de 7 chiffres valide (1234567) produit un code-barres EAN-8 scannable. Les entrées nulles, vides ou non numériques sont interceptées par les clauses de garde et n'atteignent jamais l'étape d'encodage.

Code-barres EAN-8 généré à partir des 7 chiffres valides saisis : 1234567

L'API d'écriture effectue également sa propre validation interne : elle vérifie les sommes de contrôle, les contraintes de longueur et rejette les caractères invalides pour l'encodage sélectionné. Les clauses de garde ci-dessus permettent de détecter les problèmes plus tôt, donnant ainsi à l'appelant le contrôle sur le message d'erreur et le chemin de récupération. Pour une liste complète des encodages supportés et de leurs contraintes, voir le guide de création de code-barres et le guide de création de code-barres à partir des données.


Comment valider les résultats avant le traitement en aval ?

Lorsque des données de codes-barres sont transmises à un autre système (écriture dans une base de données, appel d'API, imprimante d'étiquettes), il est utile de regrouper le nombre de résultats, l'intégrité des valeurs et les contrôles de type dans une seule méthode réutilisable avant de transmettre les données :

Entrée

Un scan d'entrepôt de code-barres Code128 utilisé comme cible de lecture pour le validateur.

L'encodage du code-barres Code128 WH-SCAN-4471 est utilisé comme entrée de scan d'entrepôt pour l'exemple de validateur.
using IronBarCode;
using System.Collections.Generic;
using System.Linq;

// Reusable validation helper — consolidates null, empty, value, and
// expected-format checks into a single method. Returns an empty list
// (never null) so callers do not need to null-check the return value.
public static class BarcodeValidator
{
    public static List<BarcodeResult> GetValidResults(
        string imagePath,
        BarcodeEncoding? expectedType = null,
        double confidenceThreshold = 0.7)
    {
        // Apply confidence threshold at scan level via BarcodeReaderOptions
        var options = new BarcodeReaderOptions
        {
            ConfidenceThreshold = confidenceThreshold
        };

        BarcodeResults results = BarcodeReader.Read(imagePath, options);

        // Return empty list instead of null so callers never need to null-check the return value
        if (results is null || results.Count == 0)
            return new List<BarcodeResult>();

        return results
            .Where(r => !string.IsNullOrWhiteSpace(r.Value))           // skip results with empty decoded data
            .Where(r => expectedType == null || r.BarcodeType == expectedType) // null accepts any symbology
            .ToList();
    }
}

// Usage: pass the image path and the symbology you expect
var validated = BarcodeValidator.GetValidResults(
    "warehouse-scan.png",
    expectedType: BarcodeEncoding.Code128,
    confidenceThreshold: 0.7);

if (validated.Count == 0)
{
    // No valid results; log the failure and skip downstream processing
    return;
}

// All results have passed null, empty, type, and confidence checks
foreach (var barcode in validated)
{
    SendToInventorySystem(barcode.Value, barcode.BarcodeType.ToString()); // placeholder for your downstream call
}

La méthode renvoie une liste vide plutôt que null, les appelants n'ont donc jamais besoin de vérifier si la valeur de retour est nulle. Le paramètre optionnel expectedType filtre par symbologie, ce qui empêche le système en aval de recevoir des formats inattendus lorsqu'une numérisation détecte à la fois un code QR et un Code 128 à partir de la même image.

Pour la lecture par lots de plusieurs fichiers, appliquez le même modèle à chaque fichier et agrégez les résultats. L'option ExpectBarcodeTypes sur BarcodeReaderOptions restreint la numérisation aux symbologies attendues dès le départ, de sorte que moins de résultats indésirables atteignent le validateur.


Lecture supplémentaire

Consultez les options de licence lorsque le pipeline sera prêt pour la production.

Questions Fréquemment Posées

Qu'est-ce que la vérification des nulls dans les opérations de code-barres ?

La vérification des nulls dans les opérations de code-barres consiste à vérifier si un résultat ou une entrée de code-barres est nul pour éviter les erreurs à l'exécution et garantir un traitement fluide des codes-barres.

Pourquoi la vérification des nulls est-elle importante dans les opérations de codes-barres en C# ?

La vérification des nulls est cruciale dans les opérations de codes-barres en C# pour éviter les exceptions et garantir que l'application peut gérer avec grâce les cas où les données de codes-barres peuvent être manquantes ou invalides.

Comment IronBarcode peut-il aider avec la vérification des nulls ?

IronBarcode fournit des méthodes intégrées pour gérer facilement les vérifications de nulls, permettant aux développeurs de gérer en toute sécurité les données de codes-barres sans implémenter manuellement des logiques de validation complexes.

Quelles sont les meilleures pratiques pour la vérification des nulls dans IronBarcode ?

Les meilleures pratiques incluent la vérification des valeurs nulles dans les BarcodeResults, la validation des entrées avant traitement, et l'utilisation de filtres de confiance pour garantir des résultats de balayage de codes-barres fiables.

IronBarcode peut-il filtrer les résultats par confiance pour éviter les résultats nuls ?

Oui, IronBarcode permet de filtrer les résultats de codes-barres par niveaux de confiance, ce qui aide à réduire les résultats nuls et garantit une grande précision dans la lecture des codes-barres.

Existe-t-il un moyen de valider les entrées d'écriture en utilisant IronBarcode ?

IronBarcode permet la validation des entrées d'écriture pour s'assurer que les données encodées dans les codes-barres sont correctes et complètes, évitant des problèmes lors de la génération de codes-barres.

Que se passe-t-il si un résultat de code-barres nul n'est pas traité ?

Si un résultat de code-barres nul n'est pas traité, cela peut entraîner des exceptions à l'exécution et perturber le flux de l'application, causant potentiellement des plantages ou des opérations incorrectes.

How does IronBarcode's reusable validator pattern work?

IronBarcode's reusable validator pattern consolidates null checks, empty checks, value integrity, and expected format validation into a single method, simplifying the validation process before results are used downstream.

What are some constraints that BarcodeWriterEncoding handles during barcode creation?

BarcodeWriterEncoding imposes constraints like string length and character validity based on the barcode type. For example, EAN-8 must have 7 or 8 numeric digits. Correctly formatted input avoids exceptions during encoding.

How does IronBarcode ensure the quality of scanned barcodes?

IronBarcode uses properties such as ConfidenceThreshold in BarcodeReaderOptions to ensure only high-quality barcodes are included in results. This pre-scanning filter means low-quality reads are discarded before further processing.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Prêt à commencer?

Nuget Downloads 2,422,100Version :2026.9vient de sortir

Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez "IronBarcode"
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

  1. Téléchargez et décompressez IronBarCode à un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans Visual Studio Solution Explorer, faites un clic droit sur Références. Sélectionnez Parcourir, "IronBarcode.dll"

Licences à partir de 749 $

Vous avez une question ? Contactez notre équipe de développement.

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise