IRONSOFTWAREHOME

C#'taki Barkod İşlemleri İçin Null Kontrolü Nasıl Yapılır

Curtis Chau
Curtis Chau
Updated: 9 Mayıs 2026

IronBarcode, C# üzerinden BarcodeReader.Read ile tarama sonuçlarını bir BarcodeResults koleksiyonu olarak döndürür. Bu yöntem, giriş görüntüsü tanınmazsa null döndürür veya barkodlar tespit edilmezse boş bir koleksiyon döndürür. BarcodeWriter.CreateBarcode, giriş null, boş veya geçersiz formatta olduğunda bir istisna fırlatır.

Kamera beslemeleri, belge yüklemeleri ve depo tarayıcıları gibi gerçek dünya tarama kaynakları her zaman okunabilir bir barkod sağlamayabilir. Sonuç özelliklerine erişmek veya koleksiyonu kontrol etmeden yineleme yapmak, çalışma zamanında bir NullReferenceException neden olabilir. Yazma API'sine geçersiz stringler iletmek bir ArgumentException ile sonuçlanabilir. Okuma ve yazma işlemlerinde önleyici önlemler almak, bu istisnaların üretimde önlenmesine yardımcı olur.

Bu nasıl yapılır klavuzu, IronBarcode okuma ve yazma işlemlerinde null ve boş sonuçlarla başa çıkmayı, koruyucu ifade, güven filtrelemesi ve yeniden kullanılabilir bir doğrulayıcı deseni kullanarak açıklar.


Hızlı Başlangıç: Barkod İşlemlerinde Null Sonuçları Ele Alma

Herhangi bir sonuç özelliğine erişmeden önce BarcodeResults koleksiyonunu güvenli bir şekilde kontrol etmek için IronBarcode'un koruma deseni kullanın. Hızlı bir şekilde başlamak için bu minimal okuma ve kontrol ile hemen başlayın:

  1. 1Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. 2Bu kod parçacığını kopyalayın ve çalıştırın.

    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. 3Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronBarcode kullanmaya başlayın
    arrow pointer

Null ve Boş Barkod Sonuçları Nasıl Ele Alınır?

İki hata modu vardır: Giriş geçerli bir görüntü değilse BarcodeResults null döner ve görüntüde barkod yoksa boş döner. First, Value erişmek veya her iki koşulu doğrulamadan yineleme yapmak bir çalışma zamanı istisnasına neden olur.

İşleme döngüsüne girmeden önce her iki durumu da kontrol edin:

Giriş

Bir Code128 barkod sevkiyat etiketi (başarı yolu) ve barkodsuz boş bir görüntü (hata yolu).

Nakliye etiketi girişi olarak kullanılan SHP-20240001 kodlayan Code128 barkodu

shipping-label.png (başarı yolu)

Boş sonuç yolunu tetiklemek için kullanılan, barkod içermeyen boş beyaz görüntü

blank-image.png (başarısızlık yolu, barkod yok)

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

Her BarcodeResult, her ikisi de kodlanmış barkod içeriğini döndüren Value ve Text string özelliklerini sağlar. Ciddi şekilde hasar görmüş barkodlar veya kısmi taramalar boş veya boşluk değerleri üretebilir. Boş değerlerin alt sistemlere ulaşmasını önlemek için her sonuçta string.IsNullOrWhiteSpace kullanın.

BarcodeReaderOptions ayrıca düşük kaliteli okumaların sonuç koleksiyonuna ulaşmadan önce düşürüldüğü bir ConfidenceThreshold özelliğine (0,0 ila 1,0) sahiptir:

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

Barkod Yazma İşlemlerine Null-Güvenli Desenler Nasıl Uygulanır?

BarcodeWriter.CreateBarcode bir string değeri ve bir BarcodeWriterEncoding veya BarcodeEncoding enum alır. Null veya boş bir dize geçirmek hemen bir hata fırlatır. Format kısıtlamaları da geçerlidir: EAN-8 7 ila 8 rakam kabul eder, UPC-A 11 ila 12 rakam kabul eder ve Code 128 bir karakter sınırına sahiptir. Çağrıdan önce girdiyi doğrulamak, bu hataların kodlama adımında oluşmasını engeller:

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

Çıktı

Geçerli bir 7 haneli giriş (1234567), taranabilir bir EAN-8 barkodu üretir. Null, boş veya sayısal olmayan girdiler koruyucu deyimler tarafından yakalanır ve hiçbir zaman kodlama adımına ulaşmaz.

Geçerli 7 haneli 1234567 girdisinden üretilen EAN-8 barkod

Yazma API'si de kendi dahili doğrulamalarını yapar: kontrol toplamlarını kontrol eder, uzunluk kısıtlamalarını onaylar ve seçilen kodlama için geçersiz karakterleri reddeder. Yukarıdaki koruma deyimleri, sorunları daha erken yakalar ve çağrıcıya hata mesajı üzerinde kontrol ve toparlanma yolu sağlar. Desteklenen kodlamaların ve kısıtlamalarının tam listesi için barkod oluşturma nasıl yapılır kılavuzu ve veriden barkod oluşturma rehberine bakın.


Aşağı Akış İşlemeden Önce Sonuçlar Nasıl Doğrulanır?

Barkod verileri başka bir sisteme (bir veritabanı yazması, bir API çağrısı, bir etiket yazıcı) aktarıldığında, sonuç sayısını, değer bütünlüğünü ve tür kontrollerini tek bir yeniden kullanılabilir metoda konsolide etmek yardımcı olur:

Giriş

Bir Code128 barkod depo taraması, doğrulayıcı için okuma hedefi olarak kullanılır.

Depo taraması için doğrulayıcı örneği olarak kullanılan Code128 barkod kodlaması WH-SCAN-4471
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
}

Metod, null döndermek yerine boş bir liste döndürür, bu yüzden çağıranlar dönen değeri null kontrol etmek zorunda kalmazlar. İsteğe bağlı expectedType parametresi, bir tarama hem bir QR kodu hem de aynı resimden bir Code 128 aldığında, alt sistemin beklenmeyen formatlar almasını önler.

Birden çok dosyada toplu okuma için her dosya başına aynı deseni uygular ve sonuçları toplar. ExpectBarcodeTypes seçeneği, BarcodeReaderOptions üzerinde taramayı beklenen sembolojilere baştan daraltır, bu yüzden daha az istenmeyen sonuç doğrulayıcıya ulaşır.


Daha Fazla Okuma

Lisans seçeneklerini görüntüleyin hattı üretim için hazır olduğunda.

Sıkça Sorulan Sorular

Barkod işlemlerinde null kontrolü nedir?

Barkod işlemlerinde null kontrolü, çalışma zamanı hatalarını önlemek ve pürüzsüz barkod işleme sağlamak için bir barkod sonucu veya girişinin null olup olmadığını doğrulama işlemini içerir.

C# barkod işlemlerinde null kontrolü neden önemlidir?

C# barkod işlemlerinde null kontrolü, istisnaları önlemek ve barkod verisinin eksik veya geçersiz olabileceği durumları zarif bir şekilde ele almak için önemlidir.

IronBarcode null kontrolüne nasıl yardımcı olabilir?

IronBarcode, geliştiricilerin karmaşık doğrulama mantığını manuel olarak uygulamadan barkod verilerini güvenli bir şekilde yönetmesine olanak tanıyan yerleşik yöntemler sağlar.

IronBarcode'da null kontrolü için en iyi uygulamalar nelerdir?

En iyi uygulamalar, null değerler için BarcodeResults'ü kontrol etmeyi, işlemden önce girdileri doğrulamayı ve güven filtrelerini kullanarak güvenilir barkod tarama sonuçları sağlamayı içerir.

IronBarcode güvene göre sonuçları filtreleyebilir mi?

Evet, IronBarcode güven seviyelerine göre barkod sonuçlarını filtrelemenize olanak tanır, bu da null çıktıları azaltmaya ve barkod okuma doğruluğunu artırmaya yardımcı olur.

IronBarcode ile yazma girdilerini doğrulamak mümkün mü?

IronBarcode, barkodlara kodlanan verinin doğru ve eksiksiz olduğunu doğrulamak için yazma girdilerinin doğrulanmasını sağlar ve bu da barkod oluşturma sırasında sorunların önlenmesine yardımcı olur.

Bir null barkod sonucu ele alınmazsa ne olur?

Eğer bir null barkod sonucu ele alınmazsa, çalışma zamanı istisnalarına yol açabilir ve uygulamanın akışını kesintiye uğratarak olası çöküşlere veya yanlış işlemlere neden olabilir.

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
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

Başlamaya Hazır mısınız?

Nuget Downloads 2,422,100Sürüm:2026.9yeni yayınlandı

Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez
PDF için C# NuGet Kütüphanesi
NuGet ile yükleyin

Sürüm: 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. Çözüm Gezgini'nde Referanslar'a sağ tıklayın, NuGet Paketlerini Yönet
  2. Gözat'ı seçin ve "IronBarCode" arayın
  3. Paketi seçin ve yükleyin
C# PDF DLL
DLL İndir

Sürüm: 2026.9

  1. ~/Libs gibi bir yere, Çözüm dizininizde IronBarCode'u indirip çıkarın
  2. Visual Studio Çözüm Gezgini'nde, Başvurulara sağ tıklayın. Gözat'ı seçin, "IronBarCode.dll"

$999 adresinden lisanslar

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez