IRONSOFTWAREHOME

Wie man Nullprüfungen für Barcode-Operationen in C# handhabt

Curtis Chau
Curtis Chau
Updated: 9. Mai 2026

IronBarcode liefert Scannergebnisse als BarcodeResults-Sammlung in C# durch BarcodeReader.Read zurück. Diese Methode gibt null zurück, wenn das Eingabebild nicht erkannt wird, oder eine leere Sammlung, wenn keine Barcodes erkannt werden. BarcodeWriter.CreateBarcode wirft eine Ausnahme, wenn die Eingabe null, leer oder in einem ungültigen Format ist.

Scanquellen aus der Praxis, wie z. B. Kamerabilder, Dokumenten-Uploads und Lagerscanner, liefern möglicherweise nicht immer einen lesbaren Barcode. Auf resultierende Eigenschaften zuzugreifen oder die Sammlung zu iterieren, ohne auf null oder leere Werte zu prüfen, kann zur Laufzeit eine NullReferenceException verursachen. Das Übergeben ungültiger Zeichenfolgen an die Schreib-API kann in einer ArgumentException resultieren. Die Verwendung von Schutzklauseln sowohl bei Lese- als auch bei Schreibvorgängen hilft, diese Ausnahmen im Produktivbetrieb zu vermeiden.

Dieses How-to erklärt, wie man Null- und leere Ergebnisse in IronBarcode-Lese- und Schreiboperationen behandelt, indem Guard-Klauseln, Vertrauenfiltern und einem wiederverwendbarem Validator-Muster verwendet wird.


Schnellstart: Umgang mit Null-Ergebnissen bei Barcode-Operationen

Verwenden Sie IronBarcodes Guard-Muster, um die BarcodeResults-Sammlung sicher zu prüfen, bevor Sie auf irgendeine Ergebniseigenschaft zugreifen. Legen Sie sofort los mit dieser kurzen Lektüre und Überprüfung:

  1. 1Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. 2Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    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. 3Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute, IronBarcode in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
    arrow pointer

Wie geht man mit Null- und leeren Barcode-Ergebnissen um?

Es gibt zwei Fehlerzustände: BarcodeResults ist null, wenn die Eingabe kein gültiges Bild ist, und leer, wenn das Bild keine Barcodes enthält. Auf First, Value zuzugreifen oder ohne Überprüfung beider Bedingungen zu iterieren, wird eine Laufzeitausnahme verursachen.

Prüfen Sie beide Bedingungen, bevor Sie in die Verarbeitungsschleife eintreten:

Eingabe

Ein Code128-Barcode-Versandschein (Erfolgsweg) und ein leeres Bild ohne Barcode (Fehlerweg).

Code128-Barcode, der SHP-20240001 codiert, verwendet als Eingabe für das Versandetikett

shipping-label.png (Erfolgspfad)

Leeres weißes Bild ohne Barcode, das verwendet wird, um den Pfad für leere Ergebnisse auszulösen

blank-image.png (Fehlerpfad, kein Barcode vorhanden)

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}");
}

Jeder BarcodeResult stellt Value und Text-Zeichenfolgeneigenschaften bereit, die beide den dekodierten Barcode-Inhalt zurückgeben. Stark beschädigte Barcodes oder unvollständige Scans können zu leeren oder weißen Werten führen. Verwenden Sie string.IsNullOrWhiteSpace auf jedem Ergebnis, um zu verhindern, dass leere Werte in nachgeschaltete Systeme gelangen.

BarcodeReaderOptions hat auch eine ConfidenceThreshold-Eigenschaft (0,0 bis 1,0), die qualitativ minderwertige Lesewerte verwirft, bevor sie die Ergebnissammlung erreichen:

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}");

Wie wendet man Null-sichere Muster beim Barcode-Schreiben an?

BarcodeWriter.CreateBarcode nimmt einen Zeichenfolgenwert und ein BarcodeWriterEncoding oder BarcodeEncoding-Enum. Das Übergeben eines Nullwerts oder einer leeren Zeichenkette führt sofort zu einer Ausnahme. Formatbeschränkungen gelten ebenfalls: EAN-8 akzeptiert 7 bis 8 numerische Ziffern, UPC-A akzeptiert 11 bis 12 und Code 128 hat ein Zeichenlimit. Durch die Validierung der Eingabe vor dem Aufruf werden diese Ausnahmen vom Kodierungsschritt ferngehalten:

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");

Ausgabe

Eine gültige 7-stellige Eingabe (1234567) erzeugt einen scannbaren EAN-8-Barcode. Nullwerte, leere oder nicht-numerische Eingaben werden von den Schutzklauseln abgefangen und erreichen niemals den Kodierungsschritt.

EAN-8-Barcode, generiert aus der gültigen 7-stelligen Eingabe 1234567

Die Schreib-API führt auch eine eigene interne Validierung durch: Sie prüft Prüfsummen, verifiziert Längenbeschränkungen und weist ungültige Zeichen für die ausgewählte Kodierung zurück. Die oben genannten Schutzklauseln fangen Probleme früher ab und geben dem Aufrufer die Kontrolle über die Fehlermeldung und den Wiederherstellungspfad. Eine vollständige Liste der unterstützten Kodierungen und ihrer Einschränkungen finden Sie in der Anleitung zur Barcode-Erstellung und im Leitfaden zum Erstellen von Barcodes aus Daten .


Wie lassen sich Ergebnisse vor der Weiterverarbeitung validieren?

Wenn Barcode-Daten in ein anderes System eingespeist werden (z. B. Datenbankeinträge, API-Aufrufe, Etikettendrucker), ist es hilfreich, die Ergebnisanzahl, die Datenintegrität und die Typüberprüfungen in einer einzigen wiederverwendbaren Methode zusammenzufassen, bevor die Daten weitergegeben werden:

Eingabe

Ein Code128-Barcode-Lagerscan, der als Lesetarget für den Validator verwendet wird.

Code128-Barcode-Codierung WH-SCAN-4471 wird als Eingabe für den Lagerscan im Validierungsbeispiel verwendet.
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
}

Die Methode gibt eine leere Liste anstelle von null zurück, sodass Aufrufer den Rückgabewert nie auf null prüfen müssen. Der optionale expectedType-Parameter filtert nach Symbologie, was verhindert, dass das nachgelagerte System unerwartete Formate erhält, wenn ein Scan sowohl einen QR-Code als auch einen Code 128 aus demselben Bild erfasst.

Beim Stapellesen mehrerer Dateien wird für jede Datei dasselbe Muster angewendet und die Ergebnisse werden anschließend aggregiert. Die ExpectBarcodeTypes-Option auf BarcodeReaderOptions schränkt den Scan im Vorfeld auf erwartete Symbologien ein, sodass weniger unerwünschte Ergebnisse den Validator erreichen.


Weiterführende Literatur

Die Lizenzierungsoptionen können Sie einsehen , sobald die Pipeline produktionsbereit ist.

Häufig gestellte Fragen

Was versteht man unter Nullwertprüfung bei Barcode-Operationen?

Die Nullprüfung bei Barcode-Operationen beinhaltet die Überprüfung, ob ein Barcode-Ergebnis oder eine Eingabe null ist, um Laufzeitfehler zu vermeiden und eine reibungslose Barcode-Verarbeitung zu gewährleisten.

Warum ist die Nullprüfung bei Barcode-Operationen in C# wichtig?

Die Überprüfung auf Nullwerte ist bei Barcode-Operationen in C# von entscheidender Bedeutung, um Ausnahmen zu vermeiden und sicherzustellen, dass die Anwendung Fälle, in denen Barcode-Daten fehlen oder ungültig sind, problemlos behandeln kann.

Wie kann IronBarcode bei der Nullwertprüfung helfen?

IronBarcode bietet integrierte Methoden zur einfachen Behandlung von Null-Prüfungen, sodass Entwickler Barcode-Daten sicher verwalten können, ohne komplexe Validierungslogik manuell implementieren zu müssen.

Welche Best Practices gibt es für die Nullwertprüfung in IronBarcode?

Zu den bewährten Verfahren gehören die Überprüfung von BarcodeResults auf Nullwerte, die Validierung der Eingaben vor der Verarbeitung und die Verwendung von Konfidenzfiltern, um zuverlässige Ergebnisse beim Barcode-Scannen zu gewährleisten.

Kann IronBarcode die Ergebnisse nach Konfidenzintervall filtern, um Null-Ausgaben zu vermeiden?

Ja, IronBarcode ermöglicht das Filtern von Barcode-Ergebnissen nach Konfidenzniveaus, was dazu beiträgt, Null-Ausgaben zu reduzieren und eine hohe Genauigkeit beim Barcode-Lesen zu gewährleisten.

Gibt es eine Möglichkeit, Schreibeingaben mit IronBarcode zu validieren?

IronBarcode ermöglicht die Validierung von Schreibeingaben, um sicherzustellen, dass die in Barcodes kodierten Daten korrekt und vollständig sind und Probleme bei der Barcode-Generierung vermieden werden.

Was passiert, wenn ein Null-Barcode-Ergebnis nicht behandelt wird?

Wird ein Null-Barcode-Ergebnis nicht behandelt, kann dies zu Laufzeitausnahmen führen und den Ablauf der Anwendung stören, was potenziell zu Abstürzen oder fehlerhaften Operationen führen kann.

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
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Bereit anzufangen?

Nuget Downloads 2,422,100Version:2026.9gerade veröffentlicht

Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.
C# NuGet-Bibliothek für PDF
Installation mit NuGet

Version: 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. Rechtsklick auf Referenzen, NuGet-Pakete verwalten
  2. Wählen Sie Durchsuchen und suchen Sie "IronBarcode"
  3. Paket auswählen und installieren
C# PDF DLL
Download DLL

Version: 2026.9

  1. Laden Sie IronBarCode herunter und entpacken Sie es an einem Ort wie ~/Libs in Ihrem Lösungsverzeichnis
  2. Klicken Sie im Visual Studio Solution Explorer mit der rechten Maustaste auf Verweise. Wählen Sie Durchsuchen und dann "IronBarcode.dll"

Lizenzen ab $999

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.