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

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

Anonim Nesne Tanıtımı

C#'de anonim tipler, açıkça tanımlanmış bir sınıf yerine genel-yalnızca okuma özelliklerini tek bir anonim tip nesnesine kapsülleme mekanizması sunar. Tek kullanımlık veri yapıları oluşturmak için yararlıdırlar. Bunlar, doğrudan System.Object'ten türetilen derleyici tarafından oluşturulan türlerdir, nesne özelliklerini verimli bir şekilde kapsülleyerek hafif, değiştirilemez veri kaplarını sunar. Bu türler, derleyicinin otomatik olarak tür adını çıkarıp oluşturduğu, kaynak kod düzeyinde erişilemeyen mühürlü sınıflardır. Ayrıca .NET projeleri için bir PDF kütüphanesi olan IronPDF'yi keşfedeceğiz.

Temel Özellikler

  • Anonim türler, katı bir şekilde sınırlı yeteneklere sahiptir:
  • Özellikler, anonim türün özellik tanımında genel-yalnızca okuma olarak otomatik olarak uygulanır.
  • Kullanıcılar, içinde Yöntemler, olaylar veya Equals ya da GetHashCode gibi diğer sınıf üyelerini açıkça tanımlayamaz.
  • Boş değerlerle, anonim fonksiyonlarla veya işaretçi türleriyle başlatılamazlar, anonim türlerin bütünlüğünü garanti eder.

Yaygın Kullanım Durumları

LINQ İşlemleri

Anonim veri tipi nesneleri, LINQ sorgu ifadelerinde, özellikle daha büyük nesnelerden belirli özellik alt kümelerini verimli bir şekilde döndürdükleri anonim-tür nesneler için seçme cümlelerinde başarılıdır. Bu yaklaşım, yalnızca gerekli verileri içeren geçici nesneler oluşturarak bellek kullanımını optimize eder.

Geçici Veri Gruplandırma

Resmi bir sınıf oluşturmanın aşırı olacağı durumlarda, geçici veri yapıları için verimli kaplar görevi görürler. Bu, özellikle kısa ömürlü veri dönüşümleri veya ara hesaplamalar için yararlıdır.

Özellik Kapsülleme

Anonim veri tipi, ilgili nesne özelliklerini genel-yalnızca okuma ilkeleri kullanarak bir araya getiren temiz bir yöntem sunar. Derleyici, tür güvenliğini sağlarken özellik erişimi için özlü söz dizimi sunar.

Söz Dizimi ve Yapı

Anonim türlerin oluşturulması, var anahtar kelimesi, new operatörü ve nesne başlatıcı sözdizimi kullanılarak belirli bir deseni takip eder. Derleyici, kaynak kod seviyesinde erişilemez durumda kalan bir tür adını otomatik olarak üretir.

var person = new { FirstName = "Iron", LastName = "Dev", Age = 35 }; // public int age in this anonymous type
var person = new { FirstName = "Iron", LastName = "Dev", Age = 35 }; // public int age in this anonymous type
Private person = New With {
	Key .FirstName = "Iron",
	Key .LastName = "Dev",
	Key .Age = 35
}
$vbLabelText   $csharpLabel

Özellik Başlatma Kuralları

Derleyici, anonim türlerde özellik başlatılması için katı kurallar uygular. Tüm özellikler nesne oluşturma sırasında başlatılmalıdır ve boş değerler veya işaretçi tipler atanamaz. Başlatıldıktan sonra, özellik değerlerine standart nokta gösterimi kullanılarak erişilebilir, ancak başlatmadan sonra okunabilir olduklarından değiştirilemezler.

Tür Çıkarsaması ve Eşleşme

var person1 = new { Name = "Iron", Age = 30 };
var person2 = new { Name = "Dev", Age = 25 };
var person1 = new { Name = "Iron", Age = 30 };
var person2 = new { Name = "Dev", Age = 25 };
Dim person1 = New With {
	Key .Name = "Iron",
	Key .Age = 30
}
Dim person2 = New With {
	Key .Name = "Dev",
	Key .Age = 25
}
$vbLabelText   $csharpLabel

Derleyici, eşleşen özellik adlarına, türlere ve sıralamaya sahip anonim türler için aynı tür bilgisini üretir. Bu, aynı montaj içindeki metod parametresi olarak kullanılmak veya koleksiyonlarda kullanılmak üzere tür uyumluluğuna olanak tanır.

İç İçe Geçen Anonim Türler

Anonim veri türleri, anonim türdeki nesne özellikleri ile karmaşık iç içe yapıları destekler. Bu, hiyerarşik veri temsillerinin oluşturulması için faydalıdır:

var student = new {
    Id = 1,
    PersonalInfo = new {
        Name = "James",
        Contact = new {
            Email = "james@email.com",
            Phone = "123-456-7890"
        }
    },
    Grades = new { Math = 95, Science = 88 }
};
var student = new {
    Id = 1,
    PersonalInfo = new {
        Name = "James",
        Contact = new {
            Email = "james@email.com",
            Phone = "123-456-7890"
        }
    },
    Grades = new { Math = 95, Science = 88 }
};
Dim student = New With {
	Key .Id = 1,
	Key .PersonalInfo = New With {
		Key .Name = "James",
		Key .Contact = New With {
			Key .Email = "james@email.com",
			Key .Phone = "123-456-7890"
		}
	},
	Key .Grades = New With {
		Key .Math = 95,
		Key .Science = 88
	}
}
$vbLabelText   $csharpLabel

Koleksiyon İşlemleri

Anonim türler, koleksiyon manipülasyonu ve veri dönüştürme içeren senaryolarda mükemmeldir.

var items = new[] {
    new { ProductId = 1, Name = "Laptop", Price = 1200.00m },
    new { ProductId = 2, Name = "Mouse", Price = 25.99m },
    new { ProductId = 3, Name = "Keyboard", Price = 45.50m }
};
var items = new[] {
    new { ProductId = 1, Name = "Laptop", Price = 1200.00m },
    new { ProductId = 2, Name = "Mouse", Price = 25.99m },
    new { ProductId = 3, Name = "Keyboard", Price = 45.50m }
};
Dim items = {
	New With {
		Key .ProductId = 1,
		Key .Name = "Laptop",
		Key .Price = 1200.00D
	},
	New With {
		Key .ProductId = 2,
		Key .Name = "Mouse",
		Key .Price = 25.99D
	},
	New With {
		Key .ProductId = 3,
		Key .Name = "Keyboard",
		Key .Price = 45.50D
	}
}
$vbLabelText   $csharpLabel

IronPDF: C# PDF Kütüphanesi

IronPDF, .NET uygulamalarında PDF belgelerini oluşturmak, düzenlemek ve yönetmek için güçlü bir kütüphanedir. C# ile çalışırken, geliştiriciler özellikle bir bütün sınıf oluşturmanın gerekli olmadığı senaryolar için hafif ve gelişi güzel veri yapıları için anonim nesneler kullanır. Bu anonim nesneler, dinamik olarak PDF belgeleri oluşturmak için IronPDF ile sorunsuz şekilde kullanılabilir. Hızlı veri-üzerinden PDF iş akışları için esnek bir çözüm oluşturulmasına yardımcı olur. IronPDF'in anonim nesnelerle nasıl çalıştığını gösteren bir örnek:

Örnek: PDF'yi Doldurmak için Anonim Nesneler Kullanma

Bir PDF'de tablo olarak göstermek istediğiniz bir satış verileri listeniz olduğunu hayal edin. Resmi bir sınıf oluşturmak yerine, verileri hızla biçimlendirmek için anonim nesne kullanabilirsiniz.

using IronPdf;
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        // Set your IronPDF license key here
        License.LicenseKey = "Your-Licence-Key";

        // Sample data using anonymous objects
        var salesData = new[]
        {
            new { Product = "Laptop", Quantity = 2, Price = 1200.50 },
            new { Product = "Smartphone", Quantity = 5, Price = 800.00 },
            new { Product = "Headphones", Quantity = 10, Price = 150.75 }
        };

        // Create an HTML string dynamically using the anonymous object data
        var htmlContent = @"
        <html>
        <head><style>table {border-collapse: collapse;} th, td {border: 1px solid black; padding: 5px;}</style></head>
        <body>
        <h1>Sales Report</h1>
        <table>
            <thead>
                <tr>
                    <th>Product</th>
                    <th>Quantity</th>
                    <th>Price</th>
                </tr>
            </thead>
            <tbody>
                " +
            string.Join("", salesData.Select(item =>
                $"<tr><td>{item.Product}</td><td>{item.Quantity}</td><td>{item.Price:C}</td></tr>")) +
            @"
            </tbody>
        </table>
        </body>
        </html>";

        // Generate the PDF
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Save the PDF
        pdf.SaveAs("SalesReport.pdf");
        Console.WriteLine("PDF generated successfully!");
    }
}
using IronPdf;
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        // Set your IronPDF license key here
        License.LicenseKey = "Your-Licence-Key";

        // Sample data using anonymous objects
        var salesData = new[]
        {
            new { Product = "Laptop", Quantity = 2, Price = 1200.50 },
            new { Product = "Smartphone", Quantity = 5, Price = 800.00 },
            new { Product = "Headphones", Quantity = 10, Price = 150.75 }
        };

        // Create an HTML string dynamically using the anonymous object data
        var htmlContent = @"
        <html>
        <head><style>table {border-collapse: collapse;} th, td {border: 1px solid black; padding: 5px;}</style></head>
        <body>
        <h1>Sales Report</h1>
        <table>
            <thead>
                <tr>
                    <th>Product</th>
                    <th>Quantity</th>
                    <th>Price</th>
                </tr>
            </thead>
            <tbody>
                " +
            string.Join("", salesData.Select(item =>
                $"<tr><td>{item.Product}</td><td>{item.Quantity}</td><td>{item.Price:C}</td></tr>")) +
            @"
            </tbody>
        </table>
        </body>
        </html>";

        // Generate the PDF
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Save the PDF
        pdf.SaveAs("SalesReport.pdf");
        Console.WriteLine("PDF generated successfully!");
    }
}
Imports IronPdf
Imports System
Imports System.Linq

Friend Class Program
	Shared Sub Main()
		' Set your IronPDF license key here
		License.LicenseKey = "Your-Licence-Key"

		' Sample data using anonymous objects
		Dim salesData = {
			New With {
				Key .Product = "Laptop",
				Key .Quantity = 2,
				Key .Price = 1200.50
			},
			New With {
				Key .Product = "Smartphone",
				Key .Quantity = 5,
				Key .Price = 800.00
			},
			New With {
				Key .Product = "Headphones",
				Key .Quantity = 10,
				Key .Price = 150.75
			}
		}

		' Create an HTML string dynamically using the anonymous object data
		Dim htmlContent = "
        <html>
        <head><style>table {border-collapse: collapse;} th, td {border: 1px solid black; padding: 5px;}</style></head>
        <body>
        <h1>Sales Report</h1>
        <table>
            <thead>
                <tr>
                    <th>Product</th>
                    <th>Quantity</th>
                    <th>Price</th>
                </tr>
            </thead>
            <tbody>
                " & String.Join("", salesData.Select(Function(item) $"<tr><td>{item.Product}</td><td>{item.Quantity}</td><td>{item.Price:C}</td></tr>")) & "
            </tbody>
        </table>
        </body>
        </html>"

		' Generate the PDF
		Dim renderer = New ChromePdfRenderer()
		Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)

		' Save the PDF
		pdf.SaveAs("SalesReport.pdf")
		Console.WriteLine("PDF generated successfully!")
	End Sub
End Class
$vbLabelText   $csharpLabel

C# Anonim Nesne (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Yukarıdaki kod örneğinden konsol çıktısı

Sonuç

C# Anonim Nesne (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - IronPDF Lisanslama Sayfası

C#'daki anonim türler, resmi sınıf bildirimlerine ihtiyaç duymadan geçici veri yapıları oluşturmanın esnek ve etkili bir yolunu sağlar. LINQ sorguları, veri dönüşümleri ve IronPDF gibi kütüphanelerle çalışma sırasında özellikle yararlıdırlar. IronPDF'in PDF oluşturma yetenekleri ile anonim türleri birleştirmek, minimum kod maliyeti ile dinamik, veri odaklı PDF'ler oluşturmak için güçlü bir çözüm sunar.

IronPDF, .NET uygulamalarınızda yeteneklerini keşfetmeyi kolaylaştıran bir ücretsiz deneme yoluyla geliştiricilerin özelliklerini test etmesini sağlar. Ticari lisanslar $799'dan başlar ve yüksek performanslı HTML'den PDF'e dönüştürme, PDF düzenleme ve güvenlik özellikleri dahil olmak üzere tüm özellik setine erişim sağlar.

Sıkça Sorulan Sorular

C# dilinde anonim tipler nelerdir?

C# dilindeki anonim tipler, kamuya açık salt okunur nitelikleri, resmi bir sınıf bildirimi olmadan tek bir anonim tip nesnesine kapsüllemek için bir mekanizma sağlar. Kompiler tarafından üretilen tipler olarak hafif, değişmez veri kapları olarak kullanılırlar.

C# dilinde bir anonim tip nasıl oluşturabilirim?

C# dilinde anonim bir tip oluşturmak için var anahtar sözcüğünü new operatörü ve nesne başlatıcı söz dizimi ile kullanırsınız. Kompiler, sağlanan özellikler temelinde otomatik olarak tip adı ve yapıyı oluşturur.

Anonim tipler, C# dilinde LINQ işlemleri ile nasıl çalışır?

Anonim tipler, özellikle select cümlelerinde, LINQ sorgu ifadelerinde, daha büyük nesnelerden belirli özellik alt kümelerini verimli bir şekilde döndürerek bellek kullanımını optimize eder.

Anonim tipler iç içe yapılar içinde kullanılabilir mi?

Evet, anonim tipler iç içe yapılar içinde kullanılabilir. Bu, anonim tip nesneleri kendileri anonim tip nesnesi olan, hiyerarşik veri temsilleri oluşturmayı sağlar.

Anonim nesneleri dinamik PDF'ler oluşturmak için nasıl kullanabilirim?

Anonim nesneler, verileri dinamik PDF'lerde hızla biçimlendirmek için kullanılabilir. Bir PDF kütüphanesi ile, örneğin IronPDF ile birleştirerek minimal kodla etkili bir şekilde PDF'ler oluşturabilirsiniz.

C# dilinde anonim tiplerin kısıtlamaları nelerdir?

Anonim tipler, kamuya açık salt okunur özellikler, yöntemler, olaylar veya açıkça tanımlanmış sınıf üyeleri ile sınırlıdır. Ayrıca null değerler veya işaretçi tipleriyle başlatılamazlar.

Anonim tipler için yaygın kullanım durumları nelerdir?

Anonim tipler için yaygın kullanım durumları arasında geçici veri gruplandırma, özellik kapsülleme ve resmi bir sınıf oluşturmanın aşırı olacağı koleksiyon işlemleri bulunmaktadır.

PDF kütüphaneleri, .NET uygulamalarında veri-PDF iş akışlarını nasıl geliştirebilir?

PDF kütüphaneleri, verileri PDF belgelere dönüştürme iş akışlarını kolaylaştırarak ve veri odaklı çözümleri geliştirerek .NET uygulamaları içinde PDF belgeleri oluşturma, düzenleme ve yönetmek için sağlam araçlar sunar.

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