Compartir a través de


Definiciones de tipos

Actualización: noviembre 2007

Los tipos nuevos se definen a partir de tipos existentes. Los tipos de valor, punteros, matrices y delegados integrados se definen cuando se utilizan y se conocen como tipos implícitos. Los tipos pueden estar anidados, es decir, un tipo puede ser miembro de otro.

Una definición de tipo contiene:

  • Los atributos definidos en el tipo.

  • La visibilidad del tipo.

  • El nombre del tipo.

  • El tipo base del tipo.

  • Las interfaces que implementa el tipo.

  • Las definiciones de todos los miembros del tipo

Atributos

Los atributos proporcionan metadatos adicionales definidos por el usuario . Los atributos se pueden aplicar prácticamente a todos los elementos del lenguaje: tipos, propiedades, métodos, etc.

Accesibilidad a tipos

Todos los tipos tienen un modificador de accesibilidad que rige su accesibilidad desde otros tipos. En la tabla siguiente se describen las accesibilidades a tipos que admite el motor en tiempo de ejecución.

Accesibilidad

Descripción

public

Todos los ensamblados pueden tener acceso al tipo.

assembly

El tipo sólo está accesible desde dentro del ensamblado.

La accesibilidad de un tipo anidado depende de su dominio de accesibilidad, que viene determinado por la accesibilidad declarada del miembro y el dominio de accesibilidad del tipo contenedor inmediato. Sin embargo, el dominio de accesibilidad de un tipo anidado no puede exceder al del tipo contenedor.

El dominio de accesibilidad del miembro anidado M declarado en el tipo T en el programa P se define de la siguiente manera (teniendo en cuenta que M puede ser un tipo en sí mismo):

  • Si la accesibilidad declarada de M es public, el dominio de accesibilidad de M es el dominio de accesibilidad de T.

  • Si la accesibilidad declarada de M es protected internal, el dominio de accesibilidad de M es la intersección del dominio de accesibilidad de T con el texto de programa de P y el texto de programa de cualquier tipo derivado de T declarado fuera de P.

  • Si la accesibilidad declarada de M es protected, el dominio de accesibilidad de M es la intersección del dominio de accesibilidad de T con el texto de programa de T y el de cualquier tipo derivado de T.

  • Si la accesibilidad declarada de M es internal, el dominio de accesibilidad de M es la intersección del dominio de accesibilidad de T con el texto de programa de P.

  • Si la accesibilidad declarada de M es private, el dominio de accesibilidad de M es el texto de programa de T.

Nombres de tipo

El sistema de tipos común sólo impone dos restricciones en los nombres:

  1. Todos los nombres se codifican como cadenas de caracteres Unicode (de 16 bits).

  2. Los nombres no pueden tener un valor incrustado (de 16 bits) de 0x0000.

Todas las comparaciones se hacen byte a byte y, por lo tanto, distinguen entre mayúsculas y minúsculas y son independientes de la configuración regional.

Aunque un tipo puede hacer referencia a tipos de otros módulos y ensamblados, un tipo se define completamente dentro de un módulo. Los nombres de tipo sólo tienen que ser únicos en un ensamblado. Para identificar un tipo por completo, el nombre del tipo debe estar calificado por el ensamblado que contiene la implementación del tipo. Para obtener más información, vea Especificar nombres de tipo completos.

Tipos base e interfaces

Un tipo puede heredar valores y comportamientos de otro. El sistema de tipos común no permite que los tipos hereden de más de un tipo base.

Un tipo puede implementar cualquier número de interfaces. Para implementar una interfaz, un tipo debe implementar todos los miembros virtuales de la interfaz. Un tipo derivado puede implementar un método virtual, que se puede invocar estática o dinámicamente. Para obtener más información sobre los miembros virtuales, vea Miembros de tipos. Para obtener más información sobre la herencia y las interfaces, vea Clases e Interfaces.

Miembros de tipos

Los miembros de un tipo (eventos, campos, tipos anidados, métodos y propiedades) definen su comportamiento y estado. Para obtener más información, vea Miembros de tipos.

Vea también

Conceptos

Miembros de tipos

Otros recursos

Sistema de tipos comunes

Ensamblados en Common Language Runtime

Extender metadatos mediante atributos