C# Birincil Kurucu (Geliştiriciler İçin Nasıl Çalışır)
Nesne yönelimli C# programlaması dünyasında, Birincil Yapıcıların tanıtımı, dile yeni bir zarafet ve sadelik seviyesi getirir. Birincil yapıcılar, C# 12'de ortaya çıkan güçlü bir özellik, interceptors ve koleksiyon ifadeleri gibi özelliklerle birlikte, parametreli yapıcılar ilan etmek için daha özlü bir sözdizimi sağlar. Birincil yapıcıları derinlemesine inceleyebilirsiniz Microsoft C# rehberi üzerine.
Bu makalede, C# 12 Birincil Yapıcıları verimli bir şekilde nasıl kullanacağımızı ve işlevselliklerini, kullanım durumlarını ve geliştiricilerin sınıf başlatma yaklaşımını nasıl dönüştürdüğünü keşfedeceğiz.
Temelleri Anlamak: C#'ta Yapıcılar
Yapıcılar, nesne yönelimli programlamada önemli bir rol oynar ve nesnelerin başlatılması için bir taslak görevi görür. Geleneksel olarak, C# geliştiricileri sınıflarının ilk durumunu ayarlamak için varsayılan yapıcı veya parametreli yapıcıları kullanmışlardır. Ancak, Birincil Yapıcıların tanıtımı, bu temel C# geliştirme yönüne daha verimli bir yaklaşım ekler.
Birincil Yapıcıların Özü
C# içindeki bir Birincil Yapıcı sınıf beyanı içinde doğrudan özellikleri ilan etmek ve başlatmak için özlü bir yoldur. Özellikleri tanımlama ve atama sürecini basitleştirerek daha açıklayıcı ve okunabilir bir sözdizimi sunar.
Birincil Yapıcıların Faydaları
- Özlülük: Birincil yapıcılar, boilerplate kodunu azaltan ve okunabilirliği artıran özlü bir sözdizimi sağlar.
- Kapsam: Geleneksel yapıcılardan farklı olarak, birincil yapıcıların parametreleri tüm sınıf veya yapı boyunca kapsamda olup, kullanım esnekliği sunar.
- Varsayılan Değerler: Varsayılan parametre değerleri nesne oluşturmayı kolaylaştırarak geliştiriciler için daha uygun hale getirir.
Birincil Yapıcı İlan Etme
Birincil Yapıcı için sözdizimi, özelliklerin doğrudan sınıf başlığında ilan edilmesini içerir. Temel bir Person sınıf örneğini düşünelim:
public class Person(string name, int age)
{
public string Name { get; } = name;
public int Age { get; } = age;
public override string ToString() => $"Name: {Name}, Age: {Age}";
}
public class Person(string name, int age)
{
public string Name { get; } = name;
public int Age { get; } = age;
public override string ToString() => $"Name: {Name}, Age: {Age}";
}
Public Class Person(String name, Integer age)
Public ReadOnly Property Name() As String = name
Public ReadOnly Property Age() As Integer = age
Public Overrides Function ToString() As String
Return $"Name: {Name}, Age: {Age}"
End Function
End Class
Yukarıdaki kod parçasında, Kişi sınıfı, örnek üye Ad ve örnek üye Yaş özelliklerini başlatan bir Birincil Yapıcıya sahiptir. Yapıcı parametreleri sınıf veya yapı adı ile ilan edilir ve genel özellikler tanımlanırken parametre değerleri onlara atanır.
Örnek 1: 2D Uzayda Değişmez Nokta
public readonly struct Point(double x, double y)
{
public double X { get; } = x;
public double Y { get; } = y;
public double Magnitude => Math.Sqrt(X * X + Y * Y);
}
public readonly struct Point(double x, double y)
{
public double X { get; } = x;
public double Y { get; } = y;
public double Magnitude => Math.Sqrt(X * X + Y * Y);
}
'INSTANT VB WARNING: VB has no equivalent to the C# readonly struct:
'ORIGINAL LINE: public readonly struct Point(double x, double y)
Public Structure Point(Double x, Double y)
Public ReadOnly Property X() As Double = x
Public ReadOnly Property Y() As Double = y
Public ReadOnly Property Magnitude() As Double
Get
Return Math.Sqrt(X * X + Y * Y)
End Get
End Property
End Structure
Bu örnekte, Punto yapısındaki birincil yapıcı, X ve Y özelliklerini başlatır ve sözdiziminin ne kadar özlü ve ifadesel olabileceğini gösterir.
Örnek 2: Varsayılan Ayarlarla Yapılandırılabilir Günlükçü
public class Logger(string filePath = "log.txt", LogLevel level = LogLevel.Info)
{
private readonly string _filePath = filePath;
private readonly LogLevel _level = level;
public void Log(string message)
{
// Actual logging implementation using _filePath and _level
}
}
public class Logger(string filePath = "log.txt", LogLevel level = LogLevel.Info)
{
private readonly string _filePath = filePath;
private readonly LogLevel _level = level;
public void Log(string message)
{
// Actual logging implementation using _filePath and _level
}
}
'INSTANT VB TODO TASK: The following line contains an assignment within expression that was not extracted by Instant VB:
'ORIGINAL LINE: public class Logger(string filePath = "log.txt", LogLevel level = LogLevel.Info)
Public Class Logger(String filePath = "log.txt", LogLevel level = LogLevel.Info)
Private ReadOnly _filePath As String = filePath
Private ReadOnly _level As LogLevel = level
Public Sub Log(ByVal message As String)
' Actual logging implementation using _filePath and _level
End Sub
End Class
Burada, Günlükçü sınıfının birincil yapıcısı, dosyaYolu ve seviye için varsayılan değerler sağlar, esnek ve kullanımı kolay hale getirirken yapılandırılabilirliği korur.
Örnek 3: Bağımlılık Enjeksiyonu
public interface IService
{
Distance GetDistance();
}
public class ExampleController(IService service) : ControllerBase
{
public ActionResult<Distance> Get() => service.GetDistance();
}
public interface IService
{
Distance GetDistance();
}
public class ExampleController(IService service) : ControllerBase
{
public ActionResult<Distance> Get() => service.GetDistance();
}
Public Interface IService
Function GetDistance() As Distance
End Interface
Public Class ExampleController(IService service)
Inherits ControllerBase
Public Function [Get]() As ActionResult(Of Distance)
Return service.GetDistance()
End Function
End Class
Birincil yapıcılar bağımlılık enjeksiyonu senaryolarında uygundur. Bu örnekte, bir denetleyici sınıfı, bağımlılıklarını belirterek sürdürülebilirliği iyileştirir ve birim testini kolaylaştırır.
Örnek 4: Geometrik Şekil Hiyerarşisi Oluşturma
public abstract class Shape(double width, double height)
{
public double Width { get; } = width;
public double Height { get; } = height;
public abstract double CalculateArea();
}
public class Rectangle(double width, double height) : Shape(width, height)
{
public override double CalculateArea() => Width * Height;
}
public class Circle : Shape
{
public Circle(double radius) : base(radius * 2, radius * 2) { }
public override double CalculateArea() => Math.PI * Math.Pow(Width / 2, 2);
}
public abstract class Shape(double width, double height)
{
public double Width { get; } = width;
public double Height { get; } = height;
public abstract double CalculateArea();
}
public class Rectangle(double width, double height) : Shape(width, height)
{
public override double CalculateArea() => Width * Height;
}
public class Circle : Shape
{
public Circle(double radius) : base(radius * 2, radius * 2) { }
public override double CalculateArea() => Math.PI * Math.Pow(Width / 2, 2);
}
Public MustInherit Class Shape(Double width, Double height)
Public ReadOnly Property Width() As Double = width
Public ReadOnly Property Height() As Double = height
Public MustOverride Function CalculateArea() As Double
End Class
Public Class Rectangle(Double width, Double height)
Inherits Shape(width, height)
Public Overrides Function CalculateArea() As Double
Return Width * Height
End Function
End Class
Public Class Circle
Inherits Shape
Public Sub New(ByVal radius As Double)
MyBase.New(radius * 2, radius * 2)
End Sub
Public Overrides Function CalculateArea() As Double
Return Math.PI * Math.Pow(Width / 2, 2)
End Function
End Class
Bu örnekte, Şekil sınıfındaki bir birincil yapıcı, geometrik şekil hiyerarşisinin temelini oluşturur. Dikdörtgen ve Daire gibi alt sınıflar, tutarlı bir başlatma için birincil yapıcıyı kullanır. Dikdörtgen sınıfı kendisi birincil yapıcıyı tanımlar ve yakalanan birincil yapıcı parametreleri Şekil sınıfı birincil parametrelerine iletir. Daire sınıfı esnekliği, tüm sınıf içinde yapıcısını tanımlayarak ve ardından parametrelerini base anahtar kelimesini kullanarak varsayılan değerler olarak Şekil yapıcısına ileterek gösterir.
IronPDF'i Tanıtma
IronPDF, geliştiricilerin PDF dosyalarını zahmetsizce oluşturmasına, manipüle etmesine ve dönüştürmesine olanak tanıyan çok yönlü bir C# kütüphanesidir. Faturalar, raporlar veya başka herhangi bir belge oluşturuyorsanız, IronPDF, HTML içeriğinizi doğrudan C# uygulamanızın içinde düzgün ve profesyonel PDF'lere sorunsuz bir şekilde dönüştürmenize imkan tanır.
IronPDF, geliştiriciler için HTML'yi web sayfaları, URL'ler ve PDF'ye dönüştürmeye olanak tanıyan kullanışlı bir araçtır. En iyi yanı, PDF'lerin orijinal web sayfaları gibi görünmesi, tüm formatlama ve stillerin korunmasıdır. Web içeriğinden raporlar ve faturalar gibi PDF'ler oluşturmak için mükemmeldir.
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

IronPDF Kurulumu: Hızlı Başlangıç
C# projenize IronPDF'u dahil etmek için, IronPDF NuGet paketini yükleyerek başlayın. Paket Yönetici Konsolu'nda aşağıdaki komutu çalıştırın:
Install-Package IronPdf
Alternatif olarak, NuGet Paket Yöneticisi'nde "IronPDF"'yi arayın ve oradan yüklemeye devam edin.

IronPDF ile PDF oluşturma
IronPDF kullanarak PDF oluşturma süreci sadeleştirilmiştir. Aşağıdaki örneği inceleyin:
var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
// Create a new PDF document
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("C:/GeneratedDocument.pdf");
var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
// Create a new PDF document
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("C:/GeneratedDocument.pdf");
Dim htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
' Create a new PDF document
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("C:/GeneratedDocument.pdf")
Bu örnekte, IronPDF kullanılarak HTML içeriği PDF belgesine çevrilir ve belirtilen yere kaydedilir. C#'ta PDF'ler oluşturma ve manipüle etme ile ilgili daha fazla detay için bu kapsamlı eğitim bağlantısını ziyaret edin ve daha fazlasını keşfetmek için bu dokümantasyon sayfasını ziyaret edin.
C# Birincil Yapıcıları: Bir Sınıf Başlatma Devrimi
C# Birincil Yapıcılar, sınıf özelliklerini doğrudan sınıf tanımlaması içinde başlatmak için bildirimsel ve düzenli bir yaklaşım sunmaktadır. Bu zarif özelliğin IronPDF ile sorunsuz bir şekilde entegre edilip edilemeyeceğini araştıralım.
IronPDF ile C# Birincil Yapıcıların Entegrasyonu
C# Birincil Yapıcılar, esas olarak sınıf başlatılmasına odaklanan bir dil özelliği olsa da, bunların IronPDF ile doğrudan entegrasyonu yaygın bir kullanım durumu olmayabilir. IronPDF'un ana işlevselliği PDF belgelerinin üretilmesi ve yönetilmesinde yatmakta ve sınıf başlatmasının özellikleri bu iş akışı ile doğrudan uyuşmayabilir.
Ancak, geliştiriciler IronPDF konfigürasyonları veya veri modelleri ile ilgili özel sınıflar veya yapılar tanımlarken C# Birincil Yapıcılardan faydalanabilirler. Örneğin, uygulamanız PDF ile ilgili ayarları veya konfigürasyonları yönetmek için belirli bir sınıf yapısı gerektiriyorsa, bu sınıfları kısa bir şekilde başlatmak için C# Birincil Yapıcıları değerli bir araç olabilir.
public class PdfGenerationSettings(string title, bool includeHeader, bool includeFooter)
{
public string Title { get; } = title;
public bool IncludeHeader { get; } = includeHeader;
public bool IncludeFooter { get; } = includeFooter;
// Additional properties...
}
// Usage with IronPDF
var pdfSettings = new PdfGenerationSettings("My PDF Title", true, false);
var renderOptions = new ChromePdfRenderOptions
{
PaperSize = IronPdf.Rendering.PdfPaperSize.A4,
MarginTop = 20,
MarginBottom = 20,
MarginLeft = 10,
MarginRight = 10,
Title = pdfSettings.Title
};
// Apply settings from PdfGenerationSettings
if (pdfSettings.IncludeHeader)
{
renderOptions.TextHeader = new TextHeaderFooter
{
CenterText = "Page {page} of {total-pages}",
DrawDividerLine = true
};
}
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderingOptions = renderOptions;
pdfDocument.RenderHtmlAsPdf("<html><body><h1>Hello, IronPDF!</h1></body></html>").SaveAs("CustomizedDocument.pdf");
public class PdfGenerationSettings(string title, bool includeHeader, bool includeFooter)
{
public string Title { get; } = title;
public bool IncludeHeader { get; } = includeHeader;
public bool IncludeFooter { get; } = includeFooter;
// Additional properties...
}
// Usage with IronPDF
var pdfSettings = new PdfGenerationSettings("My PDF Title", true, false);
var renderOptions = new ChromePdfRenderOptions
{
PaperSize = IronPdf.Rendering.PdfPaperSize.A4,
MarginTop = 20,
MarginBottom = 20,
MarginLeft = 10,
MarginRight = 10,
Title = pdfSettings.Title
};
// Apply settings from PdfGenerationSettings
if (pdfSettings.IncludeHeader)
{
renderOptions.TextHeader = new TextHeaderFooter
{
CenterText = "Page {page} of {total-pages}",
DrawDividerLine = true
};
}
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderingOptions = renderOptions;
pdfDocument.RenderHtmlAsPdf("<html><body><h1>Hello, IronPDF!</h1></body></html>").SaveAs("CustomizedDocument.pdf");
Public Class PdfGenerationSettings(String title, Boolean includeHeader, Boolean includeFooter)
Public ReadOnly Property Title() As String = title
Public ReadOnly Property IncludeHeader() As Boolean = includeHeader
Public ReadOnly Property IncludeFooter() As Boolean = includeFooter
' Additional properties...
End Class
' Usage with IronPDF
Private pdfSettings = New PdfGenerationSettings("My PDF Title", True, False)
Private renderOptions = New ChromePdfRenderOptions With {
.PaperSize = IronPdf.Rendering.PdfPaperSize.A4,
.MarginTop = 20,
.MarginBottom = 20,
.MarginLeft = 10,
.MarginRight = 10,
.Title = pdfSettings.Title
}
' Apply settings from PdfGenerationSettings
If pdfSettings.IncludeHeader Then
renderOptions.TextHeader = New TextHeaderFooter With {
.CenterText = "Page {page} of {total-pages}",
.DrawDividerLine = True
}
End If
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderingOptions = renderOptions
pdfDocument.RenderHtmlAsPdf("<html><body><h1>Hello, IronPDF!</h1></body></html>").SaveAs("CustomizedDocument.pdf")
Bu örnekte, PdfGenerationSettings sınıfı PDF oluşturma ayarları ile ilgili özellikleri başlatmak için bir C# Birincil Yapıcı kullanmakta olup, sonradan hangi render seçeneklerinin ekleneceğini ve hangilerinin geçileceğini belirlemekte kullanılabilir. Çıktı, birincil yapıcı parametresi kullanılarak ayarlanan başlık metni ve başlığını içerir.

Sonuç
Sonuç olarak, C#'daki Birincil Yapıcılar, sınıf başlatması için rafine ve anlamlı bir yaklaşımı temsil ederler. Bunların bildirimsel yazımı kod okunabilirliğini artırır, değişmeyi önler ve varsayılan değerlerle nesne oluşturma işlemini basitleştirir. Özellikleri tanımlıyor olun, değişmezliği sağlıyor olun ya da varsayılan değerlere bağlanıyor olun, Birincil Yapıcılar, C# programlamanın dinamik dünyasında sınıf başlatma sanatını usta bir şekilde ele almanızı sağlar.
C# Birincil Yapıcıların IronPDF ile doğrudan entegrasyonu ana odak noktası olmayabilir, ancak bu iki unsur uyum içinde çalışabilir. C# Birincil Yapıcılar sınıf başlatmasının netliğini ve sadeliğini artırır; bunlar IronPDF iş akışı ile ilgili yapıları veya konfigürasyonları tanımlamak için değerlidir.
Güçlü PDF oluşturma için IronPDF'un gücünden faydalanın ve sınıf başlatma zarafeti önemliyse C# Birincil Yapıcılara başvurun. Bu dinamik ikili, C# programlamanın hareketli dünyasında belge oluşturmanın karmaşıklıklarını yaratıcı ve etkili bir şekilde keşfetmenizi sağlar.
IronPDF bir ücretsiz deneme sunar ve lite lisansı $799'den başlar.
Sıkça Sorulan Sorular
Ana Yapıcılar C# kodunu nasıl daha öz yapıyor?
Ana Yapıcılar, özellikleri sınıf beyanı içerisinde doğrudan tanımlayıp başlatmanıza izin vererek tekrarlayan kod miktarını azaltır ve okunabilirliği artırır.
C# 12'de tanıtılan yeni özellikler nelerdir?
C# 12, geliştiriciler için daha özlü ve güçlü sözdizimi seçenekleri sunan İkincil Yapıcılar, kesiciler ve koleksiyon ifadeleri gibi özellikler tanıtır.
Ana Yapıcılar, değişmez veri yapılarıyla kullanılabilir mi?
Evet, Ana Yapıcılar, doğrudan yapıcı içinde salt okunurdur özelliklerin başlatılmasını sağladıkları için değişmez veri yapıları için uygundur.
HTML içeriğini C# kullanarak nasıl PDF yapabilirim?
IronPDF'in ChromePdfRenderer sınıfını, HTML içeriğini PDF'ye dönüştürmek için kullanabilir ve çıktı belgesinde biçimlendirme ve stillerin korunduğundan emin olabilirsiniz.
PDF oluşturmak için IronPDF kullanmanın avantajları nelerdir?
IronPDF, C#'ta PDF dosyaları oluşturma ve düzenleme için güçlü bir platform sağlar ve HTML'den PDF'ye dönüştürme, PDF birleştirme ve detaylı stil koruma gibi özellikleri destekler.
Ana Yapıcılar bağımlılık enjeksiyonunu nasıl geliştirir?
Ana Yapıcılar, yapıcı parametrelerinde sınıf bağımlılıklarını net bir şekilde belirtir ve bağımlılık grafiğinin kurulumu ve bakımı kolaylaştırır.
Ana Yapıcılar nasıl PDF belge üretimiyle entegre edilebilir?
Ana Yapıcılar, yapılandırma sınıflarını veya IronPDF gibi kitaplıklarla PDF ayarlarıyla ilişkili yapıları başlatmak için kullanılabilir, kurulum sürecini basitleştirir.
Ana Yapıcıların pratik örnekleri nelerdir?
Pratik örnekler arasında geometrik şekil hiyerarşilerinin başlatılması ve netliğin ve sadeliğin önemli olduğu bağımlılık enjeksiyon senaryoları yer alır.
Geliştiriciler projelerinde IronPDF kullanmaya nasıl başlayabilirler?
Geliştiriciler IronPDF NuGet paketini Paket Yöneticisi Konsolu veya NuGet Paket Yöneticisi aracılığıyla yükleyebilir ve uygulama detayları için kapsamlı belgelere başvurabilirler.
IronPDF belge oluşturma iş akışlarında nasıl bir rol oynar?
IronPDF belge oluşturma iş akışlarını geliştirir, geliştiricilerin C#'ta kolayca PDF'ler oluşturmasını, dönüştürmesini ve manipüle etmesini sağlar ve diğer C# özellikleriyle kusursuz entegrasyon sağlar.




