Compartir a través de


Miembros de tipos

Actualización: noviembre 2007

El motor en tiempo de ejecución permite definir los miembros de un tipo: eventos, campos, tipos anidados, métodos y propiedades. Cada miembro tiene una firma. En la tabla siguiente se describen los miembros de tipos utilizados en .NET Framework.

Miembro

Descripción

Evento

Define un incidente al que se puede responder, así como métodos para suscribirse a un evento y anular la suscripción y para provocar el evento. Los eventos se usan con frecuencia para informar a otros tipos de cambios de estado.

Campo

Describe y contiene parte del estado del tipo. Los campos pueden ser de cualquier tipo que admita el motor en tiempo de ejecución.

Tipo anidado

Define un tipo dentro del ámbito del tipo envolvente.

Método

Describe las operaciones que se pueden hacer en el tipo. La firma de un método especifica los tipos permitidos de todos sus argumentos y de su valor devuelto.

Un constructor es una clase de método especial que crea nuevas instancias de un tipo.

Propiedad

Identifica un valor o estado del tipo y define métodos para obtener o establecer el valor de la propiedad. Las propiedades pueden ser tipos primitivos, colecciones de tipos primitivos, tipos definidos por el usuario o colecciones de tipos definidos por el usuario. Las propiedades se usan a menudo para que la interfaz pública de un tipo se mantenga independiente de la representación real del tipo.

Características de los miembros

El sistema de tipos común permite que los tipos tengan distintas características, pero no es necesario que los lenguajes admitan todas estas características. En la siguiente tabla se describen estas características de los miembros.

Característica

Se puede aplicar a

Descripción

abstract

Métodos, propiedades y eventos

El tipo no proporciona la implementación del método. Los tipos que heredan métodos abstractos y tipos que implementan interfaces con métodos abstractos deben proporcionar una implementación para el método. La única excepción es que el tipo derivado sea un tipo abstracto. Todos lo métodos abstractos son virtuales.

private, family, assembly, family y assembly, family o assembly, o public

All

Define la accesibilidad del miembro:

private

Sólo es accesible desde dentro del mismo tipo como miembro o dentro de un tipo anidado.

family

Accesible desde dentro del mismo tipo como miembro y desde tipos derivados que heredan de él.

assembly

Accesible sólo en el ensamblado en que está definido el tipo.

family y assembly

Accesible sólo desde los tipos que tengan derecho al acceso de familia y ensamblado.

family o assembly

Accesible sólo desde los tipos que tengan derecho al acceso de familia o ensamblado.

public

Accesible desde cualquier tipo.

final

Métodos, propiedades y eventos

El método virtual no puede ser reemplazado en un tipo derivado.

initialize-only

Campos

El valor sólo se puede inicializar y no se puede escribir en él después de la inicialización.

instance

Campos, métodos, propiedades y eventos

Si un miembro no está marcado como static (C# y C++), Shared (Visual Basic), virtual (C# y C++) u Overridable (Visual Basic), es un miembro de instancia (no hay palabra clave de la instancia). En la memoria habrá tantas copias de estos miembros como objetos que los utilicen.

literal

Campos

El valor asignado al campo es un valor fijo, conocido en tiempo de compilación, de un tipo de valor integrado. Los campos literales, a veces, se conocen como constantes.

newslot u override

All

Define cómo interactúa el miembro con los miembros heredados con la misma firma:

newslot

Oculta los miembros heredados con la misma firma.

override

Reemplaza la definición de un método virtual heredado.

El valor predeterminado es newslot.

static

Campos, métodos, propiedades y eventos

El miembro pertenece al tipo en que está definido, no a una instancia particular del tipo. El miembro existe incluso si no se ha creado ninguna instancia del tipo y lo comparten todas las instancias del tipo.

virtual

Métodos, propiedades y eventos

Un tipo derivado puede implementar el método, que se puede invocar estática o dinámicamente. Si se utiliza la invocación dinámica, el tipo de la instancia que hace la llamada en tiempo de ejecución determina a qué implementación del método se llama, en lugar del tipo conocido en tiempo de compilación. Para invocar un método virtual de manera estática, es posible que haya que convertir la variable en un tipo que utilice la versión deseada del método.

Sobrecarga

Cada miembro de tipo tiene una firma única. Las firmas de método están formadas por el nombre del método y una lista de parámetros (el orden y los tipos de los argumentos del método). Se pueden definir varios métodos con el mismo nombre dentro un tipo, siempre que las firmas sean distintas. Cuando se definen dos o más métodos con el mismo nombre se dice que el método está sobrecargado. Por ejemplo, en System.Char, IsDigit está sobrecargado. Un método toma un Char y devuelve un valor Boolean. El otro método toma una String y un Int32 y devuelve un valor Boolean. Las listas de parámetros también se pueden calificar con la restricción varargs, que indica que el método admite una lista de argumentos de variables.

Heredar, reemplazar y ocultar miembros

Un tipo derivado hereda todos los miembros de su tipo base, es decir, estos miembros se definen en el tipo derivado y están disponibles para él. El comportamiento o cualidades de los miembros heredados se puede modificar de dos maneras:

  • Un tipo derivado puede ocultar un miembro heredado definiendo un nuevo miembro con la misma firma. Esto puede hacerse para que un miembro que era anteriormente pública se haga privado o para definir nuevo comportamiento para un método heredado marcado como final.

  • Un tipo derivado puede reemplazar a un método virtual heredado. El método de reemplazo proporciona una nueva definición del método que se invocará según el tipo del valor en tiempo de ejecución y no el tipo de la variable conocido en tiempo de compilación. Un método puede reemplazar a un método virtual sólo si el método virtual no está marcado como final y el nuevo método es, al menos, tan accesible como el método virtual.

Vea también

Conceptos

Definiciones de tipos

Otros recursos

Sistema de tipos comunes

Instrucciones de diseño de miembros

Instrucciones de diseño de tipos