
C# Eylem (Geliştiriciler için Nasıl Çalışır)
Bu derste, C# Action, Func delegate ve ilgili konuların kavramlarını öğreteceğiz. Bu kılavuz, başlangıç seviyesindekiler için tasarlanmıştır ve sizi temellerden geçirecek, örnekler sunacak ve action delegate anahtar terimlerini açıklayacaktır.
C#'ta delegelerin ne olduğunu anlayarak başlayalım. Makalede daha sonra IronPDF kütüphanesini keşfedeceğiz.
C# Temsilcilerini Anlamak
Temsilciler, belirli bir parametre seti ve dönüş türü ile tanımlanan ve önceden tanımlanmış temsilci tipi gibi işlevleri kapsayan, metodlara referanslar olarak hizmet eden bir programlama yapısıdır.
Metodların argüman olarak aktarılmasına izin verir. Özünde, bir temsilci, temsil ettiği metodu gösteren bir işlev işaretçisi olarak hizmet eder. C#'ta, yaygın olarak kullanılan iki önceden tanımlanmış temsilci türü vardır: Func ve Action.
Func Delegesi Nedir?
Func delegesi, bir dönüş değerine sahip olabilecek bir metodu temsil eder. Son tür parametresi dönüş türünü belirtir ve önceki türler giriş parametrelerini belirtir.
Örneğin, bir Func<int, int, string> iki tamsayı parametre alır ve bir dize mesajı döndürür.
Temsilcilerin Uygulamada Kullanımı: Örnekler
Func ve Action delegelerinin C#'ta nasıl çalıştığını anlamak için bazı örneklere bir göz atalım.
Action Delegesi Örneği
Bir Action delegesi, belirli bir değeri geri döndürmeyen, bunun yerine işlemler üzerinde odaklanan bir metodu icra etmek istediğinizde kullanılan, önceden tanımlanmış bir temsilci türüdür. İşte temel bir örnek:
Action<string> display = message => Console.WriteLine(message);
display("Hello, World!");Dim display As Action(Of String) = Sub(message) Console.WriteLine(message)
display("Hello, World!")Bu kod, bir anonymous method (anonim metot) kullanarak, tek bir dize parametresi alan ve bunu konsola yazdıran bir Action delegesi tanımlar. => sembolü, anonim metodları yazmak için kısa bir yol olan lambda ifadesini tanımlamak için kullanılır.
Func Delegesi Örneği
Bir Func delegesi, bir değer döndüren, aşağıdaki gibi kullanılabilen bir delegedir:
Func<int, int, int> add = (x, y) => x + y;
int result = add(5, 3);
Console.WriteLine(result);Dim add As Func(Of Integer, Integer, Integer) = Function(x, y) x + y
Dim result As Integer = add(5, 3)
Console.WriteLine(result)Bu örnek, iki tamsayı parametresi alan ve bunların toplamını döndüren bir Func delegesi oluşturur. Toplam, konsolda şöyle gösterilecektir:

Anahtar Kavramlar
Anonim Metodlar
C#'taki anonim metodlar, isim vermeden yerinde metodlar tanımlamanın bir yolunu sunar. Genellikle temsilcilerle birlikte doğrudan temsilci örnekleri oluşturmak için kullanılırlar.
Lambda İfadeleri
Lambda ifadeleri, anonim metodların yazılması için kısa bir yöntemdir. Aynı sonuca ulaşmak için daha az kod yazmanıza olanak tanır.
Genel Temsilci
Bir genel temsilci, herhangi bir veri türü ile çalışabilir. Func ve Action, giriş ve çıkış türlerini çalışma zamanında belirtmenize izin vererek daha fazla esneklik sağlayan genel temsilci örnekleridir.
Temsilci Örneği
Bir temsilci örneği, new anahtar kelimesi ile veya temsilcinin imzasına uyan bir metoda basitçe atama yapılarak oluşturulur.
System Ad Alanı
.NET'teki System ad alanı, Func ve Action gibi yerleşik türleri, temel sınıf kütüphanesinin bir parçası olarak içerir.
Temsilcilerle Asenkron Programlama
Action ve Func dahil olmak üzere temsilciler, C#'ta asenkron görevleri yönetmek için çok önemlidir. Geliştiricilerin, daha sonra asenkron olarak icra edilebilecek bir metoda referans kapsüllemelerine olanak tanır. Bu, ana uygulama iş parçacığının bir görevi başlatabileceği ve ardından görev tamamlanana kadar başka işler yapmasına olanak tanır.
Bu noktada, bir geri çağırma metodu, bir temsilci tarafından referans alınarak çağrılır ve sonucu ele alır. Bu desen, uzun süre çalışan işlemler gerçekleştirirken bile etkileşimli kalabilen duyarlı kullanıcı arayüzleri oluşturmak için hayati önem taşır.
Örnek: Asenkron Dosya İşleme
Büyük bir dosyayı işlemesi gereken bir uygulamayı düşünün. Task gibi asenkron programlama desenleriyle birlikte bir Action delegesi kullanmak, uygulama performansını önemli ölçüde artırabilir:
public async Task ProcessFileAsync(string filePath, Action<string> onComplete)
{
// Asynchronously read file content
string fileContent = await File.ReadAllTextAsync(filePath);
// Process the file content here (omitted for brevity)
// Once processing is complete, invoke the onComplete callback
onComplete?.Invoke("File processing completed successfully.");
}Public Async Function ProcessFileAsync(filePath As String, onComplete As Action(Of String)) As Task
' Asynchronously read file content
Dim fileContent As String = Await File.ReadAllTextAsync(filePath)
' Process the file content here (omitted for brevity)
' Once processing is complete, invoke the onComplete callback
onComplete?.Invoke("File processing completed successfully.")
End FunctionBu örnekte, File.ReadAllTextAsync, ana iş parçacığını engellemeden dosya içeriğini okumak için kullanılır. Dosya işlendiğinde, işlemin tamamlandığını bildirmek için onComplete adlı bir Action delegesi çağrılır, böylece UI'ı güncellemek veya sonuçları kaydetmek gibi daha ileri eylemler sağlar.
IronPDF Tanıtımı: Bir C# PDF Kütüphanesi
IronPDF, PDF dosyalarını kolayca oluşturmak, düzenlemek ve manipüle etmek için .NET geliştiricilerine yönelik kapsamlı bir C# PDF kütüphanesidir. HTML içeriğinden, CSS'den, JavaScript'den ve görüntülerden piksel mükemmelliğinde PDF'ler sağlamak için Chrome tabanlı bir render motoru ile kendini ayırt eder.
IronPDF, .NET Standard, .NET Framework ve .NET Core dahil olmak üzere çeşitli .NET çerçeveleri ve ortamları ile uyumludur, Windows, Linux ve macOS platformlarında çalışır.
Installing IronPDF
IronPDF'i .NET projelerinize dahil etmek için kullanılabilecek en basit yöntem NuGet kullanmaktır. Visual Studio'da Paket Yöneticisi Konsolu'nu açarak ve aşağıdaki komutu çalıştırarak başlayabilirsiniz:
Bu komut, IronPDF paketini alır ve kurar, böylece projeniz IronPDF'i PDF oluşturma ve manipülasyonu için kullanmaya hazır hale gelir.
Action Delegesi ile Kod Örneği
IronPDF'i bir Action delegesi ile birlikte bir PDF oluşturma görevi gerçekleştirmek için kullanmaya ilişkin basit bir örnek:
using IronPdf;
using System;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// Define an Action delegate that takes HTML content as a string
Action<string> generatePdf = html =>
{
// Render the HTML as a PDF
var pdf = renderer.RenderHtmlAsPdf(html);
// Save the PDF to a file
pdf.SaveAs("example.pdf");
};
// Generate the PDF with the provided HTML
generatePdf("<p>Hello, world!</p>");
Console.WriteLine("PDF generated successfully.");
}
}Imports IronPdf
Imports System
Module Program
Sub Main(args As String())
Dim renderer = New ChromePdfRenderer()
' Define an Action delegate that takes HTML content as a string
Dim generatePdf As Action(Of String) = Sub(html)
' Render the HTML as a PDF
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Save the PDF to a file
pdf.SaveAs("example.pdf")
End Sub
' Generate the PDF with the provided HTML
generatePdf("<p>Hello, world!</p>")
Console.WriteLine("PDF generated successfully.")
End Sub
End ModuleBu örnek, bir HTML dizgisi alarak ve onu bir PDF belgesine dönüştürmek için IronPDF'i kullanan bir Action delegesi tanımlar. Oluşturulan PDF daha sonra dosya sistemine kaydedilir. Bu yaklaşım, kodunuzu daha modüler ve esnek hale getirerek, temsilcilerin PDF oluşturma mantığını kapsüllemek için nasıl kullanılabileceğini gösterir.

Lisanslama
IronPDF, geliştiriciler için çeşitli lisanslama seçenekleri sunar, bireysel geliştirici lisanslarından kurumsal anlaşmalara kadar. Bu lisansların fiyatları $999'den başlamaktadır.
Sonuç
Şimdiye kadar, C#'ta Action ve Func delegeleri ile anonim metot ve lambda ifadelerini kullanma hakkında temel bir anlayışa sahip olmalısınız. Unutmayın, temsilci kavramlarını ustalaşmak için practice gereklidir. Kendi örneklerinizi oluşturarak temsilcileri tanımlayın, atayın ve çağırın.
IronPDF'in yeteneklerini ücretsiz deneme sürümü ile özgürce keşfedebilirsiniz. Proje gereksinimlerinize uygunsa, fiyatlar $999'ten başlayan bir lisans elde edebilirsiniz.

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 ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.
İlgili Makaleler


