Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
Les types anonymes en C# offrent un mécanisme permettant d'encapsuler des propriétés publiques en lecture seule dans un seul objet de type anonyme sans définir explicitement une déclaration de classe formelle. Il est utile pour la structure d'objet unique. Ce sont des types générés par le compilateur qui dérivent directement de System.Object, encapsulant les propriétés d'objet de manière efficace et servant de conteneurs de données légers et immuables. Ces types sont des classes scellées où le compilateur déduit et génère automatiquement le nom de type, qui reste inaccessible au niveau du code source. Nous découvrirons égalementIronPDFen tant que bibliothèque PDF pour les projets dot NET.
Les objets de type de données anonymes excellent dans les expressions de requête LINQ, en particulier dans les clauses select pour les objets de type anonyme, où ils retournent efficacement des sous-ensembles de propriétés spécifiques à partir d'objets plus grands. Cette approche optimise l'utilisation de la mémoire en créant des objets temporaires contenant uniquement les données nécessaires.
Ils servent de contenants efficaces pour les structures de données temporaires lorsqu'il serait excessif de créer une classe formelle. Cela est particulièrement utile pour les transformations de données à courte durée de vie ou les calculs intermédiaires.
Le type de données anonyme offre un moyen propre de regrouper des propriétés d'objet connexes en utilisant des propriétés en lecture seule. Le compilateur garantit la sécurité des types tout en maintenant une syntaxe concise pour l'accès aux propriétés.
La création de types anonymes suit un modèle spécifique en utilisant le mot-clé var avec l'opérateur new et la syntaxe d'initialisation d'objet. Le compilateur génère automatiquement un nom de type qui reste inaccessible au niveau du code source.
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
}
Le compilateur applique des règles strictes pour l'initialisation des propriétés dans les types anonymes. Toutes les propriétés doivent être initialisées lors de la création de l'objet et ne peuvent pas se voir attribuer de valeurs nulles ou de types de pointeurs. Une fois initialisées, les valeurs des propriétés d'un type anonyme peuvent être consultées en utilisant la notation point standard, mais elles ne peuvent pas être modifiées après l'initialisation en raison de leur nature en lecture seule.
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
}
Le compilateur génère des informations de type identiques pour les types anonymes dont les noms de propriétés, les types et l'ordre correspondent. Cela permet la compatibilité de type entre les instances à utiliser dans les collections ou à passer comme paramètres de méthode au sein de la même assemblée.
Le type de données anonyme prend en charge des structures imbriquées complexes avec des propriétés d'objets de type anonyme. Il est utile pour la création de représentations de données hiérarchiques :
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
}
}
Les types anonymes excellent dans les scénarios impliquant la manipulation de collections et la transformation de données :
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
}
}
IronPDFest une bibliothèque puissante pour générer, éditer et gérer des documents PDF dans des applications .NET. Lorsque vous travaillez avec C#, les développeurs utilisent souvent des objets anonymes pour des structures de données légères et ad hoc, surtout dans des scénarios où créer une classe entière n'est pas nécessaire. Ces objets anonymes peuvent être utilisés de manière transparente avec IronPDF pourcréer des documents PDF de manière dynamique. Cela aide à créer une solution flexible pour des flux de travail de données vers PDF rapides. Voici un exemple pour illustrer comment IronPDF fonctionne avec des objets anonymes :
Imaginez que vous avez une liste de données de ventes que vous souhaitez rendre sous forme de tableau dans un PDF. Au lieu de créer une classe formelle, vous pouvez utiliser un objet anonyme pour formater rapidement les données en vue de leur rendu.
using IronPdf;
using System;
using System.Linq;
class Program
{
static void Main()
{
License.LicenseKey = "Licenes-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()
{
License.LicenseKey = "Licenes-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()
License.LicenseKey = "Licenes-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
Les types anonymes en C# offrent une manière flexible et efficace de créer des structures de données temporaires sans avoir besoin de déclarations de classes formelles. Ils sont particulièrement utiles lorsqu'on travaille avec des requêtes LINQ, des transformations de données et des bibliothèques comme IronPDF. La combinaison de types anonymes avec les capacités de génération de PDF d'IronPDF offre une solution puissante pour créer des PDFs dynamiques et axés sur les données avec un code minimal.
IronPDF permet aux développeurs de tester ses fonctionnalités par le biais d'uneessai gratuit, ce qui facilite l'exploration de ses capacités dans vos applications .NET. Les licences commerciales commencent à partir de 749 $ et donnent accès à l'ensemble de ses fonctionnalités, y compris le rendu HTML en PDF haute performance, l'édition de PDF et les fonctionnalités de sécurité.
10 produits API .NET pour vos documents de bureau