Définitions de types
Vous pouvez définir de nouveaux types à partir de types existants. Les types valeur, pointeurs, tableaux et délégués intégrés sont définis lorsqu'ils sont utilisés et sont référencés comme des types implicites. Les types peuvent être imbriqués ; c'est-à-dire qu'un type peut être membre d'un autre type.
Une définition de type inclut :
les attributs définis sur le type ;
la visibilité du type ;
le nom du type ;
le type de base du type ;
les interfaces implémentées par le type ;
les définitions de chacun des membres du type.
Attributs
Les attributs fournissent des métadonnées définies par l'utilisateur supplémentaires. Les attributs peuvent être appliqués à n'importe quel élément de langage (types, propriétés, méthodes, etc.).
Accessibilité des types
Tous les types ont un modificateur d'accessibilité qui régit leur accessibilité à partir d'autres types. Le tableau suivant décrit les accessibilités de type prises en charge par le runtime.
Accessibilité | Description |
---|---|
public |
Le type est accessible par tous les assemblys. |
assembly |
Le type est accessible uniquement à l'intérieur de l'assembly. |
L'accessibilité d'un type imbriqué dépend de son domaine d'accessibilité, qui est déterminé par l'accessibilité déclarée du membre et le domaine d'accessibilité du type conteneur immédiat. Toutefois, le domaine d'accessibilité d'un type imbriqué ne peut pas dépasser celui du type conteneur.
Le domaine d'accessibilité d'un membre imbriqué M déclaré dans un type T à l'intérieur d'un programme P est défini de la manière suivante (en notant que M pourrait lui-même être un type) :
Si l'accessibilité déclarée de M est public, le domaine d'accessibilité de M correspond à celui de T.
Si l'accessibilité déclarée de M est protégée en interne, le domaine d'accessibilité de M correspond à l'intersection du domaine d'accessibilité de T avec le texte de programme de P et le texte de programme de n'importe quel type dérivé de T déclaré en dehors de P.
Si l'accessibilité déclarée de M est protégée, le domaine d'accessibilité de M correspond à l'intersection du domaine d'accessibilité de T avec le texte de programme de T et de tout type dérivé de T.
Si l'accessibilité déclarée de M est interne, le domaine d'accessibilité de M correspond à l'intersection du domaine d'accessibilité de T avec le texte de programme de P.
Si l'accessibilité déclarée de M est privée, le domaine d'accessibilité de M est le texte de programme de T.
Noms de types
Le système de type commun impose uniquement deux restrictions sur les noms :
Tous les noms sont codés comme des chaînes de caractères Unicode (16 bits).
Les noms ne peuvent pas incorporer la valeur (16 bits) 0x0000.
Toutes les comparaisons sont effectuées octet par octet, et respectent donc la casse et sont indépendantes des paramètres régionaux.
Bien qu'un type puisse faire référence à des types d'autres modules et assemblys, un type est entièrement défini à l'intérieur d'un module. Les noms de types doivent être uniques seulement à l'intérieur d'un assembly. Pour entièrement identifier un type, le nom du type doit être qualifié par l'assembly qui contient l'implémentation du type. Pour plus d'informations, consultez Spécification des noms de types qualifiés complets.
Types de base et interfaces
Un type peut hériter des valeurs et des comportements d'un autre type. Le système de type commun ne permet pas à des types d'hériter de plusieurs types de base.
Un type peut implémenter n'importe quel nombre d'interfaces. Pour implémenter une interface, un type doit implémenter tous les membres virtuels de cette interface. Une méthode virtuelle peut être implémentée par un type dérivé et peut être appelée de manière statique ou dynamique. Pour plus d'informations sur les membres virtuels, consultez Membres de types. Pour plus d'informations sur l'héritage et les interfaces, consultez Classes et Interfaces.
Membres de type
Le comportement et l'état d'un type sont définis par les membres du type : événements, champs, types imbriqués, méthodes et propriétés. Pour plus d'informations, consultez Membres de types.
Voir aussi
Concepts
Autres ressources
Système de type commun
Assemblys dans le Common Language Runtime
Extension des métadonnées à l'aide des attributs