Partager via


Membres de type

Mise à jour : novembre 2007

Le runtime vous permet de définir les membres de votre type : événements, champs, types imbriqués, méthodes et propriétés. Chaque membre a une signature. Le tableau suivant décrit les membres de types utilisés dans le .NET Framework.

Membre

Description

Événement

Définit un incident auquel il est possible de répondre et définit les méthodes permettant de s'abonner à l'événement, d'annuler cet abonnement et de déclencher l'événement. Les événements sont souvent utilisés pour signaler d'autres types de changements d'état.

Champ

Décrit et contient une partie de l'état du type. Les champs peuvent correspondre à n'importe quel type pris en charge par le runtime.

Type imbriqué

Définit un type dans la portée du type englobant.

Méthode

Décrit les opérations disponibles sur le type. La signature d'une méthode spécifie les types autorisés de tous ses arguments et de sa valeur de retour.

Un constructeur est un genre de méthode particulier qui crée de nouvelles instances d'un type.

Propriété

Nomme une valeur ou un état du type et définit des méthodes pour obtenir ou définir la valeur de la propriété. Les propriétés peuvent être des types primitifs, des collections de types primitifs, des types définis par l'utilisateur ou des collections de types définis par l'utilisateur. Les propriétés sont souvent utilisées pour maintenir l'interface publique d'un type indépendante de la représentation réelle du type.

Caractéristiques des membres

Le système de type commun (CTS, Common Type System) permet aux membres de types d'avoir diverses caractéristiques, mais les langages ne doivent pas obligatoirement prendre en charge toutes ses caractéristiques. Le tableau suivant décrit ces caractéristiques des membres.

Caractéristique

Applicable à

Description

abstract

Méthodes, propriétés et événements

Le type n'assure pas l'implémentation de la méthode. Les types qui héritent de méthodes abstraites et les types qui implémentent des interfaces avec des méthodes abstraites doivent fournir une implémentation pour la méthode. Une exception : le type dérivé est lui-même un type abstrait. Toutes les méthodes abstraites sont virtuelles.

private, family, assembly, family et assembly, family ou assembly, ou public

Toutes

Définit l'accessibilité du membre :

private

Accessible uniquement à partir du même type que le membre ou à l'intérieur d'un type imbriqué.

family

Accessible à partir du même type que le membre et à partir des types dérivés qui en héritent.

assembly

Accessible uniquement dans l'assembly dans lequel le type est défini.

family et assembly

Accessible uniquement à partir des types qui se qualifient pour un accès family et assembly.

family ou assembly

Accessible uniquement à partir des types qui se qualifient pour un accès family ou assembly.

public

Accessible à partir de n'importe quel type.

final

Méthodes, propriétés et événements

La méthode virtuelle ne peut pas être substituée dans un type dérivé.

initialize-only

Champs

La valeur peut seulement être initialisée et ne peut pas être écrite après initialisation.

instance

Champs, méthodes, propriétés et événements

Si un membre n'est pas marqué static (C# et C++), Shared (Visual Basic), virtual (C# et C++) ou Overridable (Visual Basic), il est membre d'instance (il n'y a pas de mot clé d'instance). La mémoire comptera autant de copies de tels membres que d'objets qui les utilisent.

literal

Champs

La valeur assignée au champ est une valeur fixe, connue au moment de la compilation, d'un type valeur intégré. Les champs de type Literal sont parfois qualifiés de constantes.

newslot ou override

Toutes

Définit comment le membre interagit avec des membres hérités ayant la même signature :

newslot

Masque les membres hérités ayant la même signature.

override

Remplace la définition d'une méthode virtuelle héritée.

La valeur par défaut est newslot.

static

Champs, méthodes, propriétés et événements

Le membre appartient au type sur lequel il est défini, et non à une instance particulière du type ; le membre existe même si une instance du type n'est pas créée, et il est partagé entre toutes les instances du type.

virtual

Méthodes, propriétés et événements

La méthode peut être implémentée par un type dérivé et peut être appelée de manière statique ou dynamique. Si un appel dynamique est utilisé, le type de l'instance qui effectue l'appel au moment de l'exécution détermine quelle implémentation de la méthode est appelée, plutôt que le type connu au moment de la compilation. Pour appeler une méthode virtuelle de manière statique, un cast en un type qui utilise la version désirée de la méthode devra éventuellement être effectué sur la variable.

Surcharge

Chaque membre de type a une signature unique. Les signatures de méthode sont composées du nom de la méthode, d'une liste de paramètres (l'ordre et les types des arguments de la méthode). Plusieurs méthodes du même nom peuvent être définies dans un type à condition que les signatures diffèrent. Lorsque plusieurs méthodes du même nom sont définies, la méthode est dite surchargée. Par exemple, dans System.Char, IsDigit est surchargée. Une méthode prend un Char et retourne un Boolean. L'autre méthode prend un String et un Int32 et retourne un Boolean. Des listes de paramètres peuvent également être qualifiées par la contrainte varargs, qui indique que la méthode prend en charge une liste d'arguments variable.

Héritage, substitution et masquage de membres

Un type dérivé hérite de tous les membres de son type de base ; c'est-à-dire que ces membres sont définis sur le type dérivé et disponible pour celui-ci. Le comportement ou les qualités de membres hérités peuvent être modifiés de deux manières :

  • Un type dérivé peut masquer un membre hérité en définissant un nouveau membre avec la même signature. Cela permet notamment de rendre privé un membre précédemment public ou de définir un nouveau comportement pour une méthode héritée marquée final.

  • Un type dérivé peut substituer une méthode virtuelle héritée. La méthode de substitution fournit une nouvelle définition de la méthode qui sera appelée en fonction du type de la valeur au moment de l'exécution et non du type de la variable connue au moment de la compilation. Une méthode peut substituer une méthode virtuelle uniquement si la méthode virtuelle n'est pas marquée final et si la nouvelle méthode est au moins aussi accessible que la méthode virtuelle.

Voir aussi

Concepts

Définitions de types

Autres ressources

Système de type commun

Instructions de conception des membres

Instructions de conception de types