AIDE .NET

Objet Anonyme C# (Comment cela fonctionne pour les développeurs)

Publié janvier 14, 2025
Partager:

Introduction de l'objet anonyme

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.

Caractéristiques clés

  • Les types anonymes sont strictement limités dans leurs capacités :
  • Les propriétés sont automatiquement implémentées en tant que propriétés publiques en lecture seule dans la définition de propriété d'un type anonyme.
  • Les utilisateurs ne peuvent pas définir explicitement de méthodes, d'événements ou d'autres membres de classe tels que les méthodes equals et gethashcode à l'intérieur.
  • Ne peut pas être initialisé avec des valeurs nulles, des fonctions anonymes ou des types de pointeurs, garantissant l'intégrité des types anonymes.

Cas d'utilisation courants

Opérations LINQ

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.

Regroupement temporaire de données

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.

Encapsulation des Propriétés

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.

Syntaxe et structure

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
}
VB   C#

Règles d'initialisation des propriétés

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.

Inférence de type et correspondance

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
}
VB   C#

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.

Types anonymes imbriqués

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
	}
}
VB   C#

Opérations de Collection

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
	}
}
VB   C#

IronPDF : C&num ; Bibliothèque PDF

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 :

Exemple : Utilisation d'objets anonymes pour remplir un PDF

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
VB   C#

Objet Anonyme en C# (Comment ça fonctionne pour les Développeurs) : Figure 1 - Sortie de la console de l'exemple de code ci-dessus

Conclusion

C# Objet Anonyme (Comment cela fonctionne pour les développeurs) : Figure 2 - Page de Licence IronPDF

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é.

SUIVANT >
C# Parallel Foreach (Comment ça fonctionne pour les développeurs)