Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 31087|Répondre: 0

[Source] Journal d’apprentissage de type C# Anonyme

[Copié le lien]
Publié sur 16/10/2020 17:41:04 | | | |
Lorsque nous ne voulons pas définir des classes complexes comme des méthodes complexes, des événements et des constructeurs, nous pouvons générer dynamiquement un type de données personnalisé -> type anonyme.

1. Définir le type d’anonymat

Lors de la définition d’un type anonyme, vous devez utiliser le mot-clé var et la syntaxe d’initialisation des objets.

var : Le compilateur génère automatiquement une nouvelle définition de classe au moment de la compilation (nous ne pouvons pas voir le nom de la classe dans le code C#).

Initialisation : Il demandera au compilateur de créer des champs d’arrière-plan privés et des propriétés (en lecture seule) pour le type nouvellement créé.

Construisez un type anonyme en passant des paramètres et en imprimant les informations pertinentes



Appel : Les types anonymes peuvent également être construits en utilisant du code dur



2. Représentation interne des types anonymes

Tous les types anonymes héritent automatiquement de l’objet, donc nous pouvons utiliser ToString, GetHashCode, Equals sur l’objet car, essayons d’appeler ceci :



Décisions et résultats :







Le type de l’objet voiture est : <>f__AnonymousType03 (le vôtre peut être différent), le nom anonyme du type est ressenti par le compilateur, nous ne pouvons pas intervenir, code CIL.

3. Implémentation des méthodes ToString() et GetHashCode().

1. À la Corde ()



2.GetHashCode()

Il utilise la variable de chaque type anonyme pour calculer la valeur de hachage comme entrée de type de System.Collections.Generic.EqualityComparer, et ne produit la même valeur de hachage que <T>si les deux types anonymes ont les mêmes propriétés et reçoivent la même valeur.

4. Sémantique égale des types anonymes

Égals()





Analysez les résultats :

1. Égal() : Le compilateur remplace Égal() pour déterminer que les objets sont égaux en fonction de la sémantique des valeurs (par exemple, note la valeur de chaque membre de données de deux objets)

2. == Opérateurs : Parce que les types anonymes ne surchargent pas les opérateurs équivalents (== , !=), == compare les références, pas le contenu.

3. GetType() : Car si nous déclarons deux types anonymes identiques (avec les mêmes attributs) dans le même assembleur, le compilateur ne générera qu’une définition d’un seul type anonyme.

5. Types anonymes contenant des types anonymes



Résumé:

En fait, nous devons être prudents à l’idée d’utiliser des types anonymes, surtout lorsque nous utilisons LINQ, et ne jamais abandonner l’utilisation de classes ou de structures fortement typées à cause de l’émergence de types anonymes.

En fait, le type anonyme lui-même présente de nombreuses limites :

  • Vous ne contrôlez pas le nom du type anonyme
  • Les types anonymes héritent de System.Object
  • Les types anonymes de champs et d’attributs sont toujours en lecture seule
  • Les types anonymes ne supportent pas les événements, les méthodes personnalisées, les opérateurs personnalisés et les réécritures personnalisées
  • Les types anonymes sont implicitement scellés
  • La création d’entités de types anonymes utilise uniquement le constructeur par défaut


Si nous devons rapidement définir la forme d’une entité sans définir sa fonction, nous pouvons utiliser le type anonyme.




Précédent:Les données SQL Server sont exportées sous forme d’un script d’insertion
Prochain:.net/C# reflète des fonctions &lt;&gt;f__AnonymousType0 méthodes non anonymes
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com