Maison  >  Article  >  développement back-end  >  Structures et classes C#

Structures et classes C#

高洛峰
高洛峰original
2017-02-08 14:39:061197parcourir

Les classes et les structures sont les deux constructions de base du même type de système dans le .NET Framework. Les deux sont essentiellement des structures de données qui encapsulent un ensemble de données et de comportements sous forme d’unité logique. Les données et le comportement sont des « membres » de la classe ou de la structure et contiennent leurs propres méthodes, propriétés, événements, etc.

Structure

La structure est le mécanisme le plus couramment utilisé par les programmeurs C# pour définir leurs propres types de valeur. La structure est plus puissante que l'énumération car elle fournit des méthodes, des champs, des opérateurs et un contrôle d'accès, etc.

Les structures sont très similaires aux classes, toutes deux représentent des structures de données qui peuvent contenir des données membres et des fonctions membres. Cependant, contrairement aux classes, les structures sont un type valeur et ne nécessitent pas d'allocation de tas. Les variables de type structure contiennent directement les données de la structure, tandis que les variables de type classe contiennent uniquement une référence aux données correspondantes (les données référencées sont appelées un « objet »). La structure

est particulièrement utile pour les petites structures de données avec une sémantique de valeur. Les nombres complexes, les points dans un système de coordonnées ou les paires clé-valeur dans un dictionnaire sont tous des exemples typiques de structures. L'essentiel de ces structures de données est qu'elles ne comportent qu'un petit nombre de données membres, ne nécessitent pas l'utilisation d'identificateurs d'héritage ou de référence et sont plus faciles à utiliser (lors de l'affectation, vous copiez la valeur directement au lieu de copier sa référence. ).

L'instruction de la structure est implémentée par le mot-clé Struct Le format de l'instruction est :

Le nom de la structure de décoration Struct

{

Le corps de la structure

};

La déclaration de structure contient un ensemble d'attributs facultatifs, suivi d'un ensemble de modificateurs de structure facultatifs, suivi du mot-clé struct et d'un identifiant utilisé pour nommer la structure, suivi d'une spécification facultative d'interface de structure, et enfin d'un corps de structure, suivi d'un point-virgule si nécessaire.

La déclaration de structure peut contenir un modificateur de structure selon les besoins : nouveau, public, protégé, interne, privé


Utilisation de la structure

C'est une erreur de définir un constructeur par défaut (sans argument) pour une structure, et c'est une erreur de réinitialiser les champs d'instance dans la structure. L'initialisation des membres de la structure peut être effectuée de deux manières : l'une consiste à utiliser un constructeur paramétré et l'autre consiste à accéder aux membres séparément après avoir déclaré la structure. Tous les membres privés ou les membres autrement rendus inaccessibles ne peuvent être initialisés que dans le constructeur.

Si vous utilisez l'opérateur new pour créer un objet structure, l'objet structure est créé et le constructeur approprié est appelé. Contrairement aux classes, les structures peuvent être instanciées sans utiliser l'opérateur new. Dans ce cas, il n’y a pas d’appel de constructeur, améliorant ainsi l’efficacité de l’allocation. Cependant, les champs resteront non attribués et l'objet ne sera pas disponible tant que tous les champs ne seront pas initialisés.


Lorsqu'une structure contient un type référence en tant que membre, le constructeur par défaut qui appelle ce membre doit être explicitement appelé, sinon le membre restera non attribué et la structure sera indisponible .

Exemple de question, créer une structure et analyser l'utilisation de la structure


Classe

La classe est une structure de données qui peut encapsuler des données membres (constantes et champs), membres de fonction (méthodes, propriétés, événements, indexeurs, opérateurs, constructeurs d'instances, constructeurs et destructeurs statiques) et autres classes (types imbriqués). Les classes sont des modèles pour créer des objets. Tous les types en C# sont des classes et toutes les instructions doivent être situées dans la classe. Il n'y a aucune instruction en dehors de la classe. Par conséquent, les classes sont les éléments de base du langage C#. Les types de classe prennent en charge l'héritage, un mécanisme qui permet aux classes dérivées d'étendre et de spécialiser une classe de base.

La classe de base spécifiée dans la déclaration de classe peut être un type de classe construit. Une classe de base elle-même ne peut pas être un paramètre de type, mais elle peut contenir des paramètres de type dans sa portée.

Dans la méthode POO, une classe est une représentation hautement abstraite et généralisée du monde réel, tandis qu'un objet est une instance d'une classe. L'objet doit avoir les caractéristiques et règles de comportement communes de sa classe. Bien sûr, un objet peut aussi avoir des caractéristiques et des règles de comportement non précisées par sa catégorie. C'est la même chose que dans la vie réelle. Une telle simulation et abstraction est plus conforme aux habitudes de pensée des gens. C'est pourquoi la méthode POO a une forte vitalité et peut être accueillie par de plus en plus de logiciels et soutenue par de nombreux développeurs informatiques. .


En bref, du point de vue d'un programmeur, une classe est un modèle de données et plusieurs processus de programme, qui sont encapsulés pour former un tout. C'est l'utilisation d'informations. technologie pour analyser la réalité. Une simulation et une abstraction du monde. Un objet est une instance d'une classe. Du point de vue d'un langage de programmation, un objet peut être compris comme le résultat d'une affectation de classe. Un objet est un composant qui constitue un programme dans la méthode POO.

La déclaration d'une classe en C# est instanciée via le mot clé class. Le format est :

Nom de classe de classe modificatrice : classe de base ou interface

{

Classe. corps

}

                                                                      ’ ‐ à }         ‐ ‐ ‐ ‐ Où " modifier", ": classe de base ou interface" sont facultatifs. Le modificateur d'une classe peut être l'un des éléments suivants ou une combinaison de ceux-ci (le même modificateur n'est pas autorisé à apparaître plusieurs fois dans la déclaration de classe ()).

(1) nouveau : autorisé uniquement à être utilisé lors de la déclaration d'une classe imbriquée, indiquant que la classe cache les membres hérités de la classe de base et portant le même nom que la classe de base

(2 )public : Indique que l'accès à la classe n'est pas restreint

(3)interne : Seule la classe dans laquelle elle se trouve peut accéder

(4) Privé : Seules les applications ou bibliothèques en . NET peut y accéder Accès

(5)abstract : classe abstraite, non autorisée à créer des instances de la classe

(6)sealed : classe scellée, dont l'héritage n'est pas autorisé


Déclaration d'héritage de classe : le langage C# ne prend en charge que l'héritage unique

(1), constructeur et destructeur

C# fournit un meilleur mécanisme pour améliorer la sécurité du programme . Le compilateur C# dispose d'une fonction de contrôle de sécurité de type stricte, qui peut détecter presque tous les problèmes de syntaxe dans le programme. Cependant, ce n’est pas parce que le programme réussit la vérification de compilation que l’erreur n’existe plus.

Le langage C# prend pleinement en compte l'apparition d'erreurs de programme et les résout bien, c'est-à-dire en plaçant le travail d'initialisation de l'objet dans le constructeur et le travail de nettoyage dans le destructeur. Lorsqu'un objet est créé, le constructeur est exécuté automatiquement. Lorsque l'objet meurt, le destructeur est exécuté automatiquement.


Le nom du constructeur ne peut pas être choisi au hasard. Il doit être reconnu par le compilateur avant de pouvoir être automatiquement exécuté. Sa méthode de dénomination est simple et raisonnable : laissez le constructeur porter le même nom que la classe. Outre le nom, une autre particularité du constructeur est qu'il n'a pas de type de valeur de retour, ce qui est différent de la fonction dont le type de valeur de retour est void.


Le destructeur est un membre de méthode qui détruit une instance d'une classe. Le destructeur ne peut pas avoir de paramètres, ni de modificateurs et ne peut pas être appelé. Le but du destructeur et du constructeur est différent, donc le destructeur est préfixé par « ~ » pour montrer la différence.

Bien que le constructeur et le destructeur soient des fonctions formellement plus simples dans une classe. Mais leur utilisation n'est en aucun cas aussi simple qu'il y paraît, donc utiliser les constructeurs et les destructeurs de manière flexible et correcte peut aider les utilisateurs à mieux comprendre le mécanisme de gestion de la mémoire du CLR et à mieux gérer les ressources du système.


(2), Classes et objets

Une classe est une collection d'objets avec les mêmes propriétés et services. Il fournit une description abstraite unifiée pour tous les objets appartenant à cette classe, qui comprend deux parties principales : les attributs et les services. Dans les langages de programmation orientés objet, une classe est une unité de programme indépendante, qui porte un nom de classe. Le nom de classe comprend deux parties principales : la description de l'attribut et la description du service.


Un objet est une entité utilisée pour décrire des choses objectives dans le système et est une unité de base du système. Un objet est constitué d'un ensemble de propriétés et d'un ensemble de services qui opèrent sur l'ensemble de propriétés. D'un point de vue plus abstrait, un objet est une abstraction de quelque chose dans le domaine du problème ou du domaine de mise en œuvre, reflétant les informations qui doivent être sauvegardées et le rôle que joue la chose dans le système. Il s'agit d'un ensemble d'attributs et du droit de le faire. effectuer des opérations sur ces attributs. Un wrapper pour un ensemble de services qui fonctionne. Le monde objectif est composé d'objets et de connexions entre les objets.

La relation entre une classe et un objet est comme la relation entre un moule et un moulage. Le résultat de l'instanciation d'une classe est un objet. L'abstraction d'un type d'objet est une classe. Une classe décrit un groupe d'objets ayant les mêmes caractéristiques (propriétés) et le même comportement (méthodes).

Pour plus d'articles liés aux structures et classes C#, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn