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

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

C#'ta new anahtar kelimesi, dilde çoklu esas işlevlere hizmet eden çok yönlü bir anahtar kelimedir. Nesneleri oluşturmak veya miras alınan üyeleri gizlemekten, bunların uygulamalarını anlamak, etkili C# geliştirmesi için çok önemlidir. Bu kılavuz, new anahtar kelimesinin çeşitli kullanımlarını keşfeder, gücünü ve esnekliğini gösteren net örnekler sunar. Bu kılavuzda daha sonra IronPDF kütüphanesi tanıtımını IronSoftware üzerinde inceleyeceğiz.

Nesne Yaratmaya Giriş

Nesne oluşturma, new operatörünün bir sınıf veya yapının bir örneğini oluşturduğu süreçtir. C#'ta, bu öncelikle belirli türün yapıcı işlevini çağıran ve yeni nesne için hafıza ayıran new anahtar kelimesi kullanılarak gerçekleştirilir.

new ile Örnek Yaratma

Bir nesne örneği oluşturmak için, new operatöründen sonra sınıf adı ve bir çift parantez gelir. Sınıfın parametre alan bir yapıcı işlevi varsa, bu parantezler içinde argümanlar sağlanmalıdır.

public class Book
{
    public string Title { get; set; }

    public Book(string title)
    {
        Title = title;
    }
}

Book book = new Book("The C# Programming Language");
public class Book
{
    public string Title { get; set; }

    public Book(string title)
    {
        Title = title;
    }
}

Book book = new Book("The C# Programming Language");
Public Class Book
	Public Property Title() As String

	Public Sub New(ByVal title As String)
		Me.Title = title
	End Sub
End Class

Private book As New Book("The C# Programming Language")
$vbLabelText   $csharpLabel

Varsayılan ve Parametresiz Yapıcılar

Bir sınıfta açıkça tanımlanmış bir yapıcı işlev yoksa, C# varsayılan bir yapıcı işlev sağlar. Ancak, parametreli bir yapıcı işlev tanımlandığında, gerekirse açıkça bir parametresiz yapıcı tanımlanmalıdır.

public class ExampleClass
{
    // Parameterless constructor
    public ExampleClass()
    {
        // Initialization code here
    }
}
public class ExampleClass
{
    // Parameterless constructor
    public ExampleClass()
    {
        // Initialization code here
    }
}
Public Class ExampleClass
	' Parameterless constructor
	Public Sub New()
		' Initialization code here
	End Sub
End Class
$vbLabelText   $csharpLabel

Gelişmiş Nesne Yaratma Teknikleri

C#'ta, nesne yaratma yalnızca sınıfları örneklemekle ilgili değildir; daha verimli, okunabilir ve özlü kod için dilin güçlü özelliklerini kullanmanın bir kapısıdır. Burada, kodlama çabalarınızı düzene koymak için dizilerle çalışma, türler kullanma ve nesne başlatıcılarını kullanma gibi gelişmiş teknikleri inceleyeceğiz.

Diziler ve Koleksiyonlar

C#'ta belirli bir dizi türünün dizilerini oluşturmak temel bir beceridir, ancak kodlama yeteneklerinizi yükselten inceliklerdir. new anahtar kelimesini kullanarak diziler oluşturabilirsiniz, türlerini ve içermeleri gereken eleman sayısını belirterek. Bu, değişkenler koleksiyonlarını yapılandırılmış bir şekilde yönetmek için kritiktir. Temel dizilerin ötesinde, new, karmaşık veri yapılarını barındıran çok boyutlu ve köşeli diziler oluşturmaya olanak tanır.

// Single-dimensional array
int[] numbers = new int[5]; // Initializes an array for 5 integers

// Multidimensional array
int[,] matrix = new int[3, 2]; // A 3x2 matrix

// Jagged array (an array of arrays)
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[4]; // First row has 4 columns
jaggedArray[1] = new int[5]; // Second row has 5 columns
jaggedArray[2] = new int[3]; // Third row has 3 columns
// Single-dimensional array
int[] numbers = new int[5]; // Initializes an array for 5 integers

// Multidimensional array
int[,] matrix = new int[3, 2]; // A 3x2 matrix

// Jagged array (an array of arrays)
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[4]; // First row has 4 columns
jaggedArray[1] = new int[5]; // Second row has 5 columns
jaggedArray[2] = new int[3]; // Third row has 3 columns
' Single-dimensional array
Dim numbers(4) As Integer ' Initializes an array for 5 integers

' Multidimensional array
Dim matrix(2, 1) As Integer ' A 3x2 matrix

' Jagged array (an array of arrays)
Dim jaggedArray(2)() As Integer
jaggedArray(0) = New Integer(3){} ' First row has 4 columns
jaggedArray(1) = New Integer(4){} ' Second row has 5 columns
jaggedArray(2) = New Integer(2){} ' Third row has 3 columns
$vbLabelText   $csharpLabel

Anonim Türler

Anonim türler, resmi bir sınıf ilan etmenin getirdiği yük olmadan geçici veri yapıları gerektiren senaryolarda parlamaktadır. new ile bir özellik başlatıcı sözdizimi kullanarak uçuşta nesneler oluşturabilirsiniz. Bu özellik, daha büyük bir nesneden bir alt özellik seçmeniz gereken LINQ sorguları için, veya belirli bir tür oluşturmadan hızlıca verileri gruplamak için son derece kullanışlıdır.

var person = new { Name = "Alice", Age = 30 };
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");

// In LINQ
var results = from p in people
              select new { p.Name, p.Age };
var person = new { Name = "Alice", Age = 30 };
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");

// In LINQ
var results = from p in people
              select new { p.Name, p.Age };
Dim person = New With {
	Key .Name = "Alice",
	Key .Age = 30
}
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")

' In LINQ
Dim results = From p In people
	Select New With {
		Key p.Name,
		Key p.Age
	}
$vbLabelText   $csharpLabel

Nesne Başlatıcılar

Bir nesne başlatıcı, bir sınıf örneği yaratmanıza ve aynı anda bir yapıcı fonksiyon çağırmadan özelliklerini ayarlamanıza olanak tanıyan bir sözdizim kolaylığı temsil eder. Bu, kodu daha okunabilir hale getirdiği gibi, farklı senaryolar için çoklu yapıcı fonksiyonlar kullanma ihtiyaçını ortadan kaldırarak hataların ortaya çıkma ihtimalini de azaltır. Nesne başlatıcılar, özelliklerini hemen ayarlamanız gereken karmaşık nesnelerle çalışırken özellikle kullanışlıdır.

public class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }
    public Point Location { get; set; }
}

Rectangle rect = new Rectangle
{
    Width = 100,
    Height = 50,
    Location = new Point { X = 0, Y = 0 }
};
public class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }
    public Point Location { get; set; }
}

Rectangle rect = new Rectangle
{
    Width = 100,
    Height = 50,
    Location = new Point { X = 0, Y = 0 }
};
Public Class Rectangle
	Public Property Width() As Integer
	Public Property Height() As Integer
	Public Property Location() As Point
End Class

Private rect As New Rectangle With {
	.Width = 100,
	.Height = 50,
	.Location = New Point With {
		.X = 0,
		.Y = 0
	}
}
$vbLabelText   $csharpLabel

Yerel Fonksiyonlar ve Lambda İfadeleri

C#, kodun esnekliğini ve özlülüğünü artırmak için yerel fonksiyonları ve lambda ifadelerini destekler.

Yerel Fonksiyon

Yerel fonksiyon, başka bir metodun kapsamı içerisinde tanımlanan bir metoddur, kodu organize etmek ve fonksiyonelliği kapsüllemek için güçlü bir araçtır.

public void PerformOperation()
{
    int LocalFunction(int x)
    {
        return x * x;
    }
    Console.WriteLine(LocalFunction(5)); // Output: 25
}
public void PerformOperation()
{
    int LocalFunction(int x)
    {
        return x * x;
    }
    Console.WriteLine(LocalFunction(5)); // Output: 25
}
Public Sub PerformOperation()
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	int LocalFunction(int x)
'	{
'		Return x * x;
'	}
	Console.WriteLine(LocalFunction(5)) ' Output: 25
End Sub
$vbLabelText   $csharpLabel

Lambda Ifadeleri

Lambda ifadeleri, açık delege türlerine ihtiyaç duymadan satır içi ifadeler veya metotlar yazmak için özlü bir yol sağlar.

Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // Output: 25
Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // Output: 25
Dim square As Func(Of Integer, Integer) = Function(x) x * x
Console.WriteLine(square(5)) ' Output: 25
$vbLabelText   $csharpLabel

Miras Almada 'new' Kullanımı

Sınıf mirasında, miras alınan üyeleri gizleyebilir, türetilmiş sınıfların temel sınıflarında bulunanlarla aynı ada sahip bir üye tanıtmasına olanak tanır.

Miras Alınan Üyelerin Gizlenmesi

new kullanarak türetilmiş bir sınıftaki bir üyeyi gizlemek, aynı üyenin üzerine yazmaz; bunun yerine, temel sınıf sürümünden farklı yeni bir üye tanıtır.

public class BaseClass
{
    public void Display()
    {
        Console.WriteLine("Base display");
    }
}

public class DerivedClass : BaseClass
{
    public new void Display()
    {
        Console.WriteLine("Derived display");
    }
}
public class BaseClass
{
    public void Display()
    {
        Console.WriteLine("Base display");
    }
}

public class DerivedClass : BaseClass
{
    public new void Display()
    {
        Console.WriteLine("Derived display");
    }
}
Public Class BaseClass
	Public Sub Display()
		Console.WriteLine("Base display")
	End Sub
End Class

Public Class DerivedClass
	Inherits BaseClass

	Public Shadows Sub Display()
		Console.WriteLine("Derived display")
	End Sub
End Class
$vbLabelText   $csharpLabel

Generics ile new'in Anlaşılması

Generics, C# programlamasında soyutlama düzeyi kazandırır, geliştiricilerin generic türler üzerinde çalışan sınıflar, metotlar ve arayüzler tasarlamalarını sağlar. new anahtar kelimesiyle birleştiğinde, generics, türleri dinamik olarak örneklemeyi sağlar, kodun tekrarlanabilirliğini artırır ve tekrarları azaltır.

Generic Türdeki new() Kısıtlaması

new() kısıtlaması, generics ile new kullanımının temel taşıdır, generic bir sınıf veya metodun bir tür argümanının genel bir parametresiz yapıcıya sahip olması gerektiğini belirtir. Bu kısıtlama, sınıf veya metod içindeki generic türünüzün örneklerini oluşturmanıza olanak tanır, generic sınıflarınızı ve metotlarınızı daha esnek ve güçlü hale getirir.

public class Container<t> where T : new()
{
    public T CreateItem()
    {
        return new T();
    }
}
public class Container<t> where T : new()
{
    public T CreateItem()
    {
        return new T();
    }
}
Public Class Container(Of T As {New})
    Public Function CreateItem() As T
        Return New T()
    End Function
End Class
$vbLabelText   $csharpLabel

Bu örnekte, Container bir parametresiz yapıcıya sahip olduğu sürece T türünün örneklerini oluşturabilir. Bu yetenek, nesne oluşturma gerektiren ancak belirli türleri önceden bilmeyen kütüphaneler veya çerçeveler geliştirirken paha biçilmezdir.

IronPDF'ye Giriş

IronPDF – PDF Oluşturma ve Manipülasyonu İçin Bir C# Kütüphanesi, PDF dosyalarıyla çalışmak için C#'ın yeteneklerini kullanan güçlü bir araç olarak öne çıkıyor. IronPDF'yi birleştirerek, geliştiriciler programatik olarak yeni HTML karakter dizilerinden, dosyalardan veya URL'lerden PDF belgeleri oluşturabilir, mevcut PDF'leri değiştirebilir ve içerik çıkarabilir, tüm bunları C#'ın tanıdık sözdizimi ve nesne örnekleme için new anahtar kelimesini kullanarak yapabilir.

HTML'den PDF'ye dönüştürmede IronPDF, özgün düzenlerin ve tarzların hassas korunmasını sağlamakta üstünlük sağlar. Web tabanlı içeriklerden, örneğin raporlar, faturalar ve belgeler gibi PDF'ler oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri desteği ile IronPDF kolaylıkla yüksek kaliteli PDF belgeler üretir.

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

Kod Örneği

using IronPdf;
using System;

namespace IronPdfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            IronPdf.License.LicenseKey = "License-Key";

            // Create a new PDF document from HTML content
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1><p>This is a PDF generated from HTML using IronPDF.</p>");

            // Save the PDF to a file
            string filePath = "HelloWorld.pdf";
            pdf.SaveAs(filePath);

            // Confirmation message
            Console.WriteLine($"PDF file has been generated at: {Environment.CurrentDirectory}\\{filePath}");
        }
    }
}
using IronPdf;
using System;

namespace IronPdfExample
{
    class Program
    {
        static void Main(string[] args)
        {
            IronPdf.License.LicenseKey = "License-Key";

            // Create a new PDF document from HTML content
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1><p>This is a PDF generated from HTML using IronPDF.</p>");

            // Save the PDF to a file
            string filePath = "HelloWorld.pdf";
            pdf.SaveAs(filePath);

            // Confirmation message
            Console.WriteLine($"PDF file has been generated at: {Environment.CurrentDirectory}\\{filePath}");
        }
    }
}
Imports IronPdf
Imports System

Namespace IronPdfExample
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			IronPdf.License.LicenseKey = "License-Key"

			' Create a new PDF document from HTML content
			Dim renderer = New ChromePdfRenderer()
			Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1><p>This is a PDF generated from HTML using IronPDF.</p>")

			' Save the PDF to a file
			Dim filePath As String = "HelloWorld.pdf"
			pdf.SaveAs(filePath)

			' Confirmation message
			Console.WriteLine($"PDF file has been generated at: {Environment.CurrentDirectory}\{filePath}")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Bu sınıf Program kesitinde, new IronPdf.ChromePdfRenderer() bir IronPDF oluşturucu nesnesinin oluşturulmasını göstermektedir. Bu nesne, üçüncü taraf kütüphanelerin C#'ın nesne yaratma desenleriyle nasıl naif bir şekilde entegre olabileceğini gösteren, bir HTML karakter dizisinden nularak yeni bir PDF oluşturmak için kullanılır. IronPDF, gelişmiş C# özelliklerini keşfeden ve nesne örnekleme hakkında bilgi edinen geliştiriciler için sınıflarını başlatmak için new anahtar kelimesinin kullanılmasını gerektirir, bu nedenle konuyla ilgili bir örnek teşkil eder.

Sonuç

C#'taki new anahtar kelimesi, nesne yönelimli programlamanın mihenk taşıdır, geliştiricilerin nesneleri örneklemesini, mirası yönetmesini ve generics'i kesinlik ve kolaylıkla kullanmalarını sağlar. Basit sınıf örneklemelerinden, anonim türler ve nesne başlatıcıları gibi gelişmiş özelliklerin kullanımına kadar pratik örneklerle, bu kılavuz new'in çok yönlülüğünü ve gücünü göstermektedir.

IronPDF entegrasyonu, C#'ın geleneksel uygulamaların ötesinde nasıl genişletilebileceğini gösterir, kod yoluyla PDF dosyalarının oluşturulmasına ve işlenmesine olanak sağlar. IronPDF, lisanslar uygun fiyattan başlayarak, geliştiricilere özelliklerini keşfetmeleri için ücretsiz deneme ve lisans seçenekleri sunar.

Sıkça Sorulan Sorular

Yeni anahtar kelimesi, C#’ta nesne başlatmayı nasıl kolaylaştırır?

C# dilinde, new anahtar kelimesi, yeni bir nesne için belleği tahsis etmek üzere bir sınıfın kurucusunu çağırarak nesne başlatmayı kolaylaştırır. Bu, sınıf veya yapı örneklerini oluşturmak için gereklidir.

C# içindeki sınıf kalıtımında yeni anahtar kelimesinin rolü nedir?

Sınıf kalıtımında yeni anahtar kelimesi, türetilmiş bir sınıfın, üst sınıftan gelen bir üyeyi geçersiz kılmadan gizlemesini sağlayarak aynı ada sahip bir üyeyi tanıtmasına olanak tanır.

C# kullanarak HTML'yi PDF'ye nasıl dönüştürebilirim?

IronPDF'in yeteneklerini kullanarak C#’ta HTML'yi PDF'ye dönüştürebilirsiniz. Kütüphane, HTML dizgilerini ve dosyalarını PDF'lere dönüştürerek orijinal düzeni ve stili korur.

C# generics'teki new() kısıtlamasının amacı nedir?

C# generics'teki new() kısıtlaması, bir tür argümanının halkın katlanabilir bir kurucuya sahip olması gerektiğini belirler, bu da bir sınıf veya yöntem içinde generik türün örneklerinin oluşturulmasına olanak tanır.

Nesne başlatıcıları C# geliştiricilerine nasıl fayda sağlar?

C#'ta nesne başlatıcıları, geliştiricilere bir sınıfın örneğini oluşturma ve özelliklerini tek bir ifadede ayarlama imkanı vererek kod okunabilirliğini artırır ve birden çok kurucu ihtiyaçını azaltır.

C# dilinde PDF'leri nasıl oluşturabilir ve işleyebilirsiniz?

C# dilinde, IronPDF kütüphanesini kullanarak PDF'leri oluşturabilir ve işleyebilirsiniz. HTML'den PDF oluşturmaktan, mevcut PDF'leri düzenlemek ve içerik çıkarmaya kadar C# sözdizimini kullanarak işlevler sağlar.

C# dilinde anonim türler nelerdir ve ne zaman kullanırsınız?

C# dilinde anonim türler, bir sınıfı resmi olarak tanımlamadan hafif, geçici veri yapıları oluşturmak için kullanılır. Özellikle LINQ sorgularında yalnızca bir alt küme özelliğinin gerektiği senaryolarda kullanışlıdırlar.

Yeni anahtar kelimesi, C# dilinde üçüncü taraf kütüphanelerin kullanımını nasıl geliştirir?

Yeni anahtar kelimesi, geliştiricilerin bu kütüphanelerden nesneler oluşturmasına olanak tanıyarak, HTML kaynaklarından PDF oluşturmak gibi işlemlerde IronPDF nesneleri oluşturmayı sağlamasıyla C# dilinde üçüncü taraf kütüphanelerin kullanımını geliştirir.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

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