Altbilgi içeriğine atla
.NET YARDıM

C# Dictionary Trygetvalue (Geliştiriciler İçin Nasıl Çalışır)

C#, birçok işlevsellik sunan çok yönlü ve güçlü bir dildir. Bunlar arasında, C# Dictionary bulunur.

C# Dizin Yapısını Anlamak

C#'de Sözlük'ün ne olduğunu anlamak için TryGetValue yöntemine dalmadan önce önemlidir. Basit terimlerle, bir Dictionary bir anahtar/değer çiftleri koleksiyonudur. Örneğin, anahtarların öğrencilerin isimleri (string değerler) ve öğrencilerin yaşlarının (integer değerler) olduğu bir Dictionary'ye sahip olabilirsiniz.

Dictionary<string, int> studentAges = new Dictionary<string, int>
{
    {"Alice", 20},
    {"Bob", 22},
    {"Charlie", 19}
};
Dictionary<string, int> studentAges = new Dictionary<string, int>
{
    {"Alice", 20},
    {"Bob", 22},
    {"Charlie", 19}
};
Dim studentAges As New Dictionary(Of String, Integer) From {
	{"Alice", 20},
	{"Bob", 22},
	{"Charlie", 19}
}
$vbLabelText   $csharpLabel

Bir Dictionary'deki anahtarlar benzersizdir. Anahtarlara erişerek karşılık gelen değeri alabilirsiniz, bu da Dictionary'leri inanılmaz derecede veritabanındaki fonksiyonlar için verimli kılar.

Geleneksel Yaklaşım: ContainsKey Yöntemi

C# Dictionary'leri ile çalışırken, yaygın bir görev belirli bir anahtarla ilişkili bir değeri almaktır. Ancak, var olmayan bir anahtara doğrudan erişmek, programınızın akışını kesintiye uğratan bir KeyNotFoundException fırlatabilir. Bunu önlemek için, belirtilen anahtarın Dictionary içinde olup olmadığını kontrol etmek yaygın bir uygulamadır. Bu noktada ContainsKey yöntemi devreye girer.

ContainsKey yöntemi, belirli bir anahtarın Sözlükte olup olmadığını kontrol eden basit ve sezgisel bir işlevdir. İşte ContainsKey yönteminin temel sözdizimi:

Dictionary<TKey, TValue>.ContainsKey(TKey key)
Dictionary<TKey, TValue>.ContainsKey(TKey key)
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Dictionary<TKey, TValue>.ContainsKey(TKey key)
$vbLabelText   $csharpLabel

Anahtarı bir parametre olarak alır ve bir Boolean değeri döndürür. Anahtar Sözlükte ise, true döndürecektir; değilse, false döndürecektir.

Öğrenci isimleri anahtarları ve karşılık gelen yaşları değerleri olarak içeren bir Dictionary örneğini düşünün.

Dictionary<string, int> studentAges = new Dictionary<string, int>
{
    {"Alice", 20},
    {"Bob", 22},
    {"Charlie", 19}
};
Dictionary<string, int> studentAges = new Dictionary<string, int>
{
    {"Alice", 20},
    {"Bob", 22},
    {"Charlie", 19}
};
Dim studentAges As New Dictionary(Of String, Integer) From {
	{"Alice", 20},
	{"Bob", 22},
	{"Charlie", 19}
}
$vbLabelText   $csharpLabel

Şimdi, 'Alice' adlı bir öğrencinin yaşını almak istiyorsanız, önce ContainsKey yöntemini kullanarak 'Alice'in Sözlükte bir anahtar olup olmadığını kontrol edersiniz.

string student = "Alice";
if (studentAges.ContainsKey(student))
{
    int age = studentAges[student];
    Console.WriteLine($"{student} is {age} years old.");
}
else
{
    Console.WriteLine($"{student} does not exist in the dictionary.");
}
string student = "Alice";
if (studentAges.ContainsKey(student))
{
    int age = studentAges[student];
    Console.WriteLine($"{student} is {age} years old.");
}
else
{
    Console.WriteLine($"{student} does not exist in the dictionary.");
}
Dim student As String = "Alice"
If studentAges.ContainsKey(student) Then
	Dim age As Integer = studentAges(student)
	Console.WriteLine($"{student} is {age} years old.")
Else
	Console.WriteLine($"{student} does not exist in the dictionary.")
End If
$vbLabelText   $csharpLabel

Bu durumda program 'Alice 20 yaşında.' yazdıracaktır. Sözlükte bulunmayan bir öğrencinin yaşını almaya çalıştığınızda ise, ContainsKey yöntemi bir KeyNotFoundException fırlatılmasını önleyecek ve bunun yerine öğrencinin mevcut olmadığını belirten bir mesaj yazdıracaktır.

Ancak, ContainsKey yöntemi faydalı olabilirken, her zaman en verimli değil çünkü Sözlük üzerinde iki arama işlemi gerçekleştiriliyor: biri ContainsKey yöntemi için, diğeri değeri almak için. Bu, özellikle büyük Dictionary'lerle çalışırken zaman alıcı olabilir.

ContainsKey yöntemi, bir Sözlükte belirtilen bir anahtar bulunamadığında istisnaları yönetmenin basit ve sezgisel bir yolu olurken, benzer işlevselliği daha iyi performansla sağlayabilecek TryGetValue gibi alternatif yöntemleri düşünmeye değer. TryGetValue konusunda detayları ilerleyen bölümlerde tartışacağız.

Dogrulama ve Almayı TryGetValue ile Birleştirme

Bu noktada TryGetValue yöntemi kullanışlı hale gelir. TryGetValue yöntemi, tek bir adımda doğrulamayı ve değer almayı birleştirerek neredeyse aynı kod işlevselliği sunar ama daha yüksek performansla.

TryGetValue yöntemi iki parametre gerektirir:

  1. Aradığınız anahtar.
  2. Anahtar varsa değeri tutacak bir out parametresi.

İşte sözdizimi:

Dictionary<TKey, TValue>.TryGetValue(TKey key, out TValue value)
Dictionary<TKey, TValue>.TryGetValue(TKey key, out TValue value)
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Dictionary<TKey, TValue>.TryGetValue(TKey key, out TValue value)
$vbLabelText   $csharpLabel

out anahtar kelimesi, bu yöntemin value parametresini değiştireceğini belirtmek için kullanılır. Eğer belirtilen anahtar bulunmazsa, out türünün varsayılan değeri olacaktır (integer'lar için 0, referans türleri için null). Aksi takdirde, sağlanan anahtara karşılık gelen değeri tutar.

TryGetValue kullanımı şu şekildedir:

string student = "Alice";
if (studentAges.TryGetValue(student, out int age))
{
    Console.WriteLine($"{student} is {age} years old.");
}
else
{
    Console.WriteLine($"{student} does not exist in the dictionary.");
}
string student = "Alice";
if (studentAges.TryGetValue(student, out int age))
{
    Console.WriteLine($"{student} is {age} years old.");
}
else
{
    Console.WriteLine($"{student} does not exist in the dictionary.");
}
Dim student As String = "Alice"
Dim age As Integer
If studentAges.TryGetValue(student, age) Then
	Console.WriteLine($"{student} is {age} years old.")
Else
	Console.WriteLine($"{student} does not exist in the dictionary.")
End If
$vbLabelText   $csharpLabel

Bu kod, ContainsKey yöntem örneğine neredeyse aynı işlevsellik sağlar ama daha verimlidir çünkü anahtarı yalnızca bir kez arar.

TryGetValue Uygulamada Kod Örneği

TryGetValue yöntemini daha iyi anlamak için pratik bir kod örneği inceleyelim. Her öğrencinin benzersiz bir kimliği ve karşılık gelen bir adı olan bir okul veritabanını düşünün. Bu veriler, öğrenci kimlik numarası anahtar olarak ve ad olarak değer olan bir Dictionary'de depolanmıştır.

Dictionary<int, string> studentNames = new Dictionary<int, string>
{
    {1, "Alice"},
    {2, "Bob"},
    {3, "Charlie"}
};
Dictionary<int, string> studentNames = new Dictionary<int, string>
{
    {1, "Alice"},
    {2, "Bob"},
    {3, "Charlie"}
};
Dim studentNames As New Dictionary(Of Integer, String) From {
	{1, "Alice"},
	{2, "Bob"},
	{3, "Charlie"}
}
$vbLabelText   $csharpLabel

Bu durumda, 2 numaralı kimlik ile öğrencinin adını almak istersiniz ancak aynı zamanda bu kimlik numarasına sahip öğrencinin veritabanında mevcut olduğundan emin olmak istersiniz.

Geleneksel olarak, anahtarın (öğrenci ID'si 2) var olup olmadığını kontrol etmek için önce ContainsKey yöntemini, ardından da karşılık gelen değeri almak için Sözlüğe erişebilirsiniz. Ancak, TryGetValue yöntemi ile bunu tek bir adımda başarabilirsiniz.

TryGetValue yöntemi iki argüman alır: aradığınız anahtar ve bu anahtarın var olması halinde bu anahtara sahip değeri tutacak out parametresi. Anahtar bulunursa, yöntem true döndürür ve karşılık gelen değeri out parametresine atar. Bulunmadığında, false döndürecektir ve out parametresi türünün varsayılan değerini alacaktır.

int i = 2; // Student ID
if (studentNames.TryGetValue(i, out string value))
{
    Console.WriteLine($"The name of the student with ID {i} is {value}.");
}
else
{
    Console.WriteLine($"No student with ID {i} exists in the dictionary.");
}
int i = 2; // Student ID
if (studentNames.TryGetValue(i, out string value))
{
    Console.WriteLine($"The name of the student with ID {i} is {value}.");
}
else
{
    Console.WriteLine($"No student with ID {i} exists in the dictionary.");
}
Dim i As Integer = 2 ' Student ID
Dim value As String
If studentNames.TryGetValue(i, value) Then
	Console.WriteLine($"The name of the student with ID {i} is {value}.")
Else
	Console.WriteLine($"No student with ID {i} exists in the dictionary.")
End If
$vbLabelText   $csharpLabel

Bu durumda, TryGetValue yöntemi studentNames Sözlüğünde anahtar 2'yi arar. Anahtarı bulursa, karşılık gelen değeri value değişkenine (öğrencinin adı) atar ve yöntem true döndürür. Sonra, program "2 numaralı kimliğe sahip öğrencinin adı Bob'dur." ifadesini çıktı verir.

TryGetValue yöntemi anahtar 2'yi bulamazsa, bir string (ki bu null'dur) için varsayılan değeri value değişkenine atar ve yöntem false döndürür. Kod ardından else bloğuna geçer ve 'Sözlükte ID 2 olan bir öğrenci yok.' yazdırır.

TryGetValue, anahtar varlığı kontrolü ve değer almayı tek bir adımda birleştirerek kodunuzu basit hale getirir. Ayrıca, daha büyük Sözlüklerde performans artışı sağlar çünkü birden fazla anahtar arama işlemi gereğini ortadan kaldırır.

Iron Suite Tanıtımı

C# yolculuğunuzda ilerlerken, programlama yeteneklerinizi önemli ölçüde geliştirebilecek birçok araç ve kütüphaneyi elinizin altında bulacaksınız. Bu araçlar arasında, C# uygulamalarının işlevselliğini genişletmek için özel olarak tasarlanmış Iron kitaplıkları bulunur. Bu kitaplıklar arasında IronPDF, IronXL, IronOCR ve IronBarcode yer alır. Her birinin benzersiz bir dizi işlevi vardır ve standart C# ile birlikte kullanıldığında önemli avantajlar sağlarlar.

IronPDF

C# Sözlük `TryGetValue` (Geliştiriciler İçin Nasıl Çalışır) Şekil 1

.NET'te PDF Oluşturma için IronPDF'yi Keşfedin HTML'den PDF dosyaları oluşturmak, düzenlemek ve PDF içeriğini çıkarmak için tasarlanmış bir C# kütüphanesidir. IronPDF ile programatik olarak PDF raporları üretebilir, PDF formlarını doldurabilir ve PDF belgelerini düzenleyebilirsiniz. Kütüphane ayrıca HTML'den PDF'ye dönüştürme özellikleri sunarak mevcut HTML içeriğini PDF'lere dönüştürmeyi kolaylaştırır.

IronPDF'nin öne çıkan özelliği, tüm düzen ve tarzları aynen koruyan HTML'den PDF'ye fonksiyonudur. Web içeriğinden raporlar, faturalar ve belgeler için uygun PDF'ler oluşturmanıza olanak tanır. HTML dosyaları, URL'ler ve HTML dizgileri kesintisiz olarak PDF'ye dönüştürülebilir.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Konu bağlamımızda, bir Dictionary'den öğrenci verilerini aldığınız ve bir PDF raporu oluşturmak istediğiniz bir senaryo hayal edin. TryGetValue gerekli verileri verimli bir şekilde alabilir ve ardından IronPDF'i kullanarak PDF belgesini oluşturabilirsiniz.

IronXL

C# Sözlük `TryGetValue` (Geliştiriciler İçin Nasıl Çalışır) Şekil 2

Excel ile Etkileşim İçin IronXL'yi Keşfedin C# ve .NET için bir Excel kütüphanesidir. Geliştiricilere .NET uygulamalarında Interop olmadan Excel dosyalarını okuma, yazma ve oluşturma olanağı tanır. Bir Excel hesap tablosundan veri ihraç etmek veya almak gerektiğinde mükemmeldir.

TryGetValue hakkında, anahtarların ürün ID'lerini ve değerlerin miktarlarını temsil ettiği bir Sözlüğünüz olduğunu varsayalım. TryGetValue kullanarak belirli bir ürünün miktarını alabilir ve ardından IronXL kullanarak bu miktarı bir Excel envanter yönetim tablosunda güncelleyebilirsiniz.

IronOCR

C# Sözlük `TryGetValue` (Geliştiriciler İçin Nasıl Çalışır) Şekil 3

Metin Tanıma İçin IronOCR'nin Gücünü Ortaya Çıkartın gelişmiş bir OCR (Optik Karakter Tanıma) ve Barkod okuma kütüphanesidir. Geliştiricilere .NET uygulamalarında görüntülerden ve PDF'lerden metin ve barkod okuma olanağı tanır. Bu, taranmış belgelerden veya görüntülerden veri çıkarmanız ve kodunuzda çalışmanız gerektiğinde özellikle faydalıdır.

Taranmış belgelerden öğrenci kimliklerini çıkarmak için IronOCR kullandığınız bir senaryoyu düşünün. İşlemden sonra, kimlikleri ve karşılık gelen öğrenci detaylarını bir Dictionary'de saklarsınız. Belirli bir öğrencinin detaylarını alırken, TryGetValue yöntemi, verileri Sözlükten verimli bir şekilde alabilir.

IronBarcode

C# Sözlük `TryGetValue` (Geliştiriciler İçin Nasıl Çalışır) Şekil 4

Barkod Çözümleri İçin IronBarcode Hakkında Bilgi Edinin, .NET için bir barkod okuma ve yazma kütüphanesidir. IronBarcode ile, geliştiriciler çeşitli barkod ve QR kod formatlarını üretebilir ve okuyabilir. Verileri kompakt, makine tarafından okunabilir bir biçimde kodlama ve çözme için güçlü bir araçtır.

Pratik bir senaryoda, bir perakende sisteminde ürün bilgilerini saklamak için barkod kullandığınızı hayal edin. Her barkod, Dictionary'de anahtar olarak depolanan benzersiz bir ürün kimliğine karşılık gelebilir. Bir barkod tarandığında, ilgili ürün detaylarını hızlı bir şekilde almak ve Görüntülemek için TryGetValue kullanabilirsiniz.

Sonuç

Iron kütüphanelerinin işlevselliklerini standart C# özellikleriyle birlikte TryGetValue yöntemi gibi incelediğimizde, bu araçların geliştirme sürecinizi önemli ölçüde artırabileceği açıktır. PDF'ler, Excel dosyaları, OCR veya Barkodlarla çalışırken, Iron Suite ihtiyaçlarınıza uygun bir çözüm sunar.

Daha da cazip olanı, bu ürünlerin her biri Iron Software ürünleri için ücretsiz bir deneme sunarak özelliklerini maliyetsiz olarak keşfetmenize ve denemenize olanak tanır. Kütüphaneleri kullanmaya devam etmeye karar verirseniz, her bir ürün için lisans $999 ile başlar. Ancak, birden fazla Iron kütüphanesiyle ilgileniyorsanız, sadece iki bireysel ürünün fiyatına tam Iron Suite'i satın alarak daha fazla değer bulabilirsiniz.

Sıkça Sorulan Sorular

TryGetValue yöntemi C# uygulamalarında performansı nasıl artırır?

TryGetValue yöntemi, anahtar doğrulama ve değer alımını tek bir işlemde birleştirerek performansı artırır. Bu, birden fazla aramanın gereksinimini azaltır ve özellikle büyük veri kümeleriyle çalışırken verimliliği artırır.

C#'ta ContainsKey ve TryGetValue yöntemleri arasındaki fark nedir?

ContainsKey, bir anahtarın sözlükte mevcut olup olmadığını kontrol eder, değerini getirmez. TryGetValue ise, anahtarın varlığını kontrol eder ve mevcutsa değeri tek bir adımda getirir, bu da onu daha verimli hale getirir.

Iron kütüphaneleri, C# Dictionary işlemleri ile entegre edilebilir mi?

Evet, IronPDF, IronXL, IronOCR ve IronBarcode gibi Iron kütüphaneleri, C# Dictionary işlemleri ile entegre edilerek uygulamaları geliştirebilir. Örneğin, TryGetValue dinamik raporlar üretirken verileri yönetmek için kullanılarak IronPDF ile daha verimli çalışmayı sağlar.

IronPDF, bir .NET uygulamasında belge üretimini nasıl geliştirebilir?

IronPDF, HTML'den PDF'leri oluşturma, düzenleme ve dönüştürme işlemlerine olanak tanır, belgenin düzeni ve stilini korur. Özellikle .NET uygulamaları içinde rapor, fatura ve diğer belgeleri programatik olarak üretmek için kullanışlıdır.

IronXL'yi C#'ta tablo yönetimi için kullanmanın faydaları nelerdir?

IronXL, Interop'a ihtiyaç duymadan Excel dosyalarını okuma, yazma ve oluşturma yetenekleri sağlar, bu da onu .NET uygulamaları içinde veri dışa aktarma ve içe aktarma görevleri için ideal kılar.

IronOCR, C# uygulamalarında veri çıkarmayı nasıl kolaylaştırır?

IronOCR, resimlerden ve PDF'lerden metin ve barkod çıkarmayı sağlar, bu sayede taranmış belgeleri işler ve çıkartılan verileri C# uygulamalarına entegre eder.

IronBarcode kütüphaneleri, C# geliştirmede hangi rolü oynar?

IronBarcode, barkod ve QR kodlarının oluşturulması ve okunmasını sağlar, verileri makine tarafından okunabilir bir formatta kodlayıp çözme imkanı sunar, bu da envanter yönetimi ve diğer uygulamalar için önemlidir.

Geliştiriciler neden C# projelerinde Iron Suite kullanmalı?

Iron Suite, C# uygulamaları içinde geniş bir görev yelpazesini etkili bir şekilde yönetme yeteneği sağlayan PDF, Excel, OCR ve Barkod işlevlerini kapsayan kapsamlı bir araç seti sunar.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara