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

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

C#'ta yeni operatör anahtar kelimesi, dildeki birçok önemli işlevi yerine getiren çok yönlüdür. Nesneleri örneklendirmekten devralınan üyeleri gizlemeye kadar, etkili C# geliştirmeleri için uygulamalarını anlamak kritik öneme sahiptir. Bu kılavuz yeni anahtar kelimenin çeşitli kullanımlarını keşfeder, gücünü ve esnekliğini açıklayan net örnekler sunar. Ayrıca bu kılavuzun ilerleyen bölümlerinde Iron Software'deki IronPDF kütüphanesi genel bakışını inceleyeceğiz.

Nesne Örneklendirmeye Giriş

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

Yeni ile Örnekler Oluşturmak

Bir nesnenin örneğini oluşturmak için, new operatörünü sınıf adı ve bir çift parantez izler. Sınıfın parametre alan bir yapıcısı varsa, bu parantezlerin içine argümanlar verilmelidir.

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 bir yapı tanımlanmadıysa, C# varsayılan bir yapı sağlar. Ancak, parametre alan bir yapı tanımlandığında, gerekirse parametresiz bir yapı açıkça ilan edilmelidir.

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 Oluşturma Teknikleri

C#'ta, nesne oluşturmada sadece sınıfların oluşturulması yoktur; dilin güçlü özelliklerini daha verimli, okunabilir ve derli toplu kod için kullanmanın kapısıdır. Burada, dizilerle çalışma, türleri kullanma ve kodlama çabalarınızı streamline etmek için nesne yapılandırıcıları gibi ileri teknikleri keşfedeceğiz.

Diziler ve Koleksiyonlar

C#'ta belirli bir dizi türünde dizi oluşturmak temel bir beceridir, ancak yeteneklerinizi yükselten detaylar var. Acha kelimesini kullanarak dizileri örnekleyebilir, türünü ve içermesi gereken eleman sayısını belirleyebilirsiniz. Yönetim koleksiyon değişkenlerini yapılandırılmış bir şekilde yönetmek için önemlidir. Temel dizilerin ötesinde, aça, karmaşık veri yapılarını yapacak olan çok boyutlu ve çentikli dizilerin oluşturulmasını kolaylaştırı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

Adsız Türler

Formal bir sınıf beyan etmeye gerek kalmadan geçici veri yapıları gerektiren senaryolarda adsız türler parlar. Açı'yı bir öge başlatıcı sözdizimi ile kullanarak nesneleri anında oluşturabilirsiniz. Bu özellik, LINQ sorgularında özellikle faydalıdır, burada daha geniş bir objeden bir alt grup özni seçmeniz veya belirli bir tür oluşturmak yerine hızlı bir şekilde veri gruplandırmanız gerektiğinde.

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 Yapıcıları

Bir nesne yapıcısı, bir sınıf örneği oluşturmanıza ve parametrelerle bir yapı çağırmadan anında özelliklerini ayarlamanıza imkan tanıyan bir sözdizim salığıdır. Bu sadece kodun okunmasını kolaylaştırmakla kalmaz, aynı zamanda farklı senaryolar için çoklu yapı çağrılması ihtiyacını ortadan kaldırarak hataların olasılığını azaltır. Karmaşık nesnelerle çalışırken, nesne yapılandırıcıları özellikle pratiktir, yalnızca ihtiyacınız olan özellikleri ayarlamanıza olanak tanı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 İfadesi

C# yerel fonksiyonlar ve lambda ifadeleri destekler, kodun esnekliğini ve kısalığını artırır.

Yerel Fonksiyon

Yerel bir fonksiyon, başka bir fonksiyon kapsamı içinde tanımlanan bir yöntemdir, kodu organize etmek ve işlevselliğ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 İfadeleri

Lambda ifadesi, açık delege türlerine gerek kalmadan satır içi ifadeler veya metodlar yazmanın etialis bir yoludur.

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

Kalıtımda 'yeni' Kullanımı

Sınıf kalıtımında, yeni kalıtılan üyeleri gizleyebilir ve türetilmiş sınıfların temel sınıflarındaki adlarla aynı ada sahip bir üye tanıtmasına izin verir.

Kalıtılan Üyeleri Gizleme

new kullanarak türetilmiş bir sınıfta bir üyeyi gizlemek aynı üyeyi geçersiz kılmaz; bunun yerine, temel sınıf sürümünden ayrık yeni bir üye tanıtılı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

Yeniyi Generiklerle Anlamak

Generikler, C# programlamasında bir soyutlama seviyesini tanıtır ve geliştiricilere, genel türlerle çalışan sınıflar, metotlar ve arayüzler tasarlama olanağı verir. Yeni kelimesi ile birleştirildiğinde, generikler türleri dinamik olarak örnekleştirmenizi sağlar, kodun yeniden kullanımını artırır ve tekrarları azaltır.

Generik Türde yeni() Kısıtlaması

Yenisi() kısıtlaması, generiklerle yeni kullanmanın temel taşlarından biri olup, bir generik sınıfta veya metotta bir tür argümanının bir açık parametresiz yapıcıya sahip olmasını belirtir. Bu kısıtlama, sınıf veya metot içerisindeki generik türün örneklerini oluşturmanıza olanak tanır, generik sınıflarınızı ve mobil araçları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, T herhangi bir parametresiz yapıcıya sahip olduğu sürece T örnekleri oluşturabilir. Bu yetenek, nesnelerin oluşmasını gerektiren, ancak önceden belirli türleri bilmeyen kütüphane veya framework'lerin geliştirilmesinde değerlidir.

IronPDF'ye Giriş

IronPDF – PDF Üretimi ve Manipülasyonu için Bir C# Kütüphanesi, C#'ın PDF dosyaları ile çalışmak için sunduğu yeteneklerini kullanan güçlü bir araç olarak öne çıkar. IronPDF'yi entegre ederek, geliştiriciler yeni PDF belgelerini HTML dizeleri, dosyalar veya URL'ler üzerinden programlı olarak oluşturabilir, mevcut PDF'leri işleyebilir ve içerik çıkarabilir, tümünü C#'ın tanıdık sözdizimi aracılığıyla ve nesne oluşturmada yeni keyword'ü tah kimlendiği aracılığıyla.

IronPDF, HTML'den PDF'ye dönüşümde mükemmeldir, özgün düzenler ve stillerin hassas bir şekilde korunmasını sağlar. Raporlar, faturalar ve belgeler gibi web tabanlı içeriklerden PDF oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri için destekle, IronPDF yüksek kaliteli PDF belgelerini kolayca ü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 render nesnesinin oluşturulmasını göstermektedir. Bu nesne daha sonra bir HTML dizisinden yeni bir PDF oluşturmak için kullanılır, C#'ın nesne oluşturma yapıları ile üçüncü taraf kütüphanelerin sorunsuz entegrasyonunu teşvik eder. IronPDF, sınıflarının başlatılmasında yeni keyword'ün kullanılmasını gerektirir, bu da nesne oluşturma ve C#'ın gelişmiş özelliklerini araştıran geliştiriciler için ilgili bir örnek yapar.

Sonuç

C#'ta yeni anahtar kelime, nesne yönelimli programlamanın temel taşıdır, geliştiricilerin nesneleri örneklemesini, kalıtımı yönetmesini ve generiklerle hassasiyet ve kolaylıkla çalışmasını sağlar. Basit sınıf örnekleri oluşturmaktan anonim türler ve nesne yapılandırıcıları gibi gelişmiş özellikleri kullanmaya kadar pratik örneklerle, bu kılavuz yeni'nin çok yönlülüğünü ve gücünü gösterir.

IronPDF'in entegrasyonu, C#'ın geleneksel uygulamaların ötesine geçerek kod yoluyla PDF dosyalarının oluşturulmasını ve işlenmesini sağlayabileceğini gösteriyor. IronPDF, bilinen özelliklerini keşfetmek için ücretsiz deneme ve lisans seçenekleri sunar; lisanslar rekabetçi bir fiyatla başlar.

Sıkça Sorulan Sorular

C#'ta new anahtar kelimesi, nesne oluşturmayı nasıl kolaylaştırır?

C#'ta, new anahtar kelimesi bir sınıfın yapıcı metodunu çağırarak yeni bir nesne için bellek tahsis eder. Bu, sınıf veya yapı örnekleri oluşturmak için gereklidir.

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

Sınıf kalıtımında new anahtar kelimesi, türetilmiş bir sınıfın, miras alınmış bir üye ile aynı ada sahip bir öğe tanıtmasına izin verir, bu da temel sınıf üyesini geçersiz kılmaksızın gizler.

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

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

C# jeneriklerinde new() kısıtlamasının amacı nedir?

C# jeneriklerinde new() kısıtlaması, bir tür argümanının genel tür içinde bir sınıf veya yöntemde örnek oluşturulmasını sağlar ve bunun halka açık parametresiz bir kurucu içermesi gerektiğini belirtir.

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

C#'ta nesne başlatıcıları, geliştiricilerin bir sınıfın bir örneğini oluşturup özelliklerini bir beyan içinde ayarlamalarına olanak tanır. Bu, kod okunabilirliğini artırır ve birden fazla yapıcıya olan ihtiyacı azaltır.

C#'ta nasıl PDF üretebilir ve işleyebilirsiniz?

C#'ta IronPDF kütüphanesini kullanarak PDF'ler oluşturabilir ve işleyebilirsiniz. HTML'den PDF oluşturma, mevcut PDF'lerle işlem yapma ve içeriği C# sözdizimi kullanarak çıkarma işlevlerini sağlar.

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

C#'ta anonim türler, resmi olarak bir sınıf beyan etmeden hafif, geçici veri yapıları oluşturmak için kullanılır. LINQ sorguları gibi yalnızca sınırlı özelliklerin gerekli olduğu senaryolarda kullanışlıdırlar.

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

Yeni anahtar kelimesi, C#'ta üçüncü taraf kütüphanelerin kullanımını geliştirir, çünkü geliştiricilerin bu kütüphanelerden nesneler oluşturmasına olanak tanır, örneğin HTML kaynaklarından PDF'ler üretmek için IronPDF nesneleri oluşturmak gibi.

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