2012-03-12 16 views
7

OK así que entiendo que VB6 iones, propiedades encapsulados en una clase puede pertenecer a una de tres categorías:¿Cuál es la diferencia entre la propiedad pública, amigo y variable pública en VB6

  • Público de la Propiedad
  • amigo
  • Pública variable

¿Cuál es la diferencia entre éstos y cómo éstos se compara con las propiedades públicas y privadas en un lenguaje más moderno como C#?

+3

Er, se olvidó de las propiedades privadas. En cualquier caso, preguntas de este tipo se responden fácilmente leyendo el manual. – Bob77

Respuesta

9

Los calificadores alcancePublic y Frienddetermine si los clientes en diferentes proyectos pueden ver el artículo.

  • Public artículos serán accesibles al código de cliente en otros proyectos y de código en el mismo proyecto.
  • Friend elementos solo son accesibles al código en el mismo proyecto, no para codificar en otros proyectos.
  • Private los elementos solo están disponibles para el código en la misma clase.

Propiedades son diferentes de variables públicas, porque con propiedades que se pueden ejecutar su propio código cuando el cliente obtiene o establece el valor . EDITAR siguiendo el comentario de Deanna: También tenga en cuenta que las variables pueden pasar ByRef a una función y los cambios funcionarán como se esperaba. Este NO es el caso de las propiedades.

NB C# puede ser más moderno, pero en mi humilde opinión el tratamiento VB6 de propiedades y variables públicas es significantly better que el tratamiento .Net.

  • En VB6 puede cambiar una variable pública en una propiedad sin romper los clientes. Ni siquiera tiene que volver a compilarlos. Not true en .Net.
  • En VB6, las variables públicas se pueden usar con enlace de datos. Not true en .Net.
  • En VB6 las variables públicas se pueden usar con las interfaces. Not true en .Net.

IMHO Microsoft cometió un error de diseño real al crear estas diferencias entre las propiedades y los campos públicos en .Net. ¿No convencido? Después de las primeras versiones de .Net, los compiladores C# y VB se modificaron para admitir automatically implemented properties. Esto le permite crear propiedades en una sola línea de código, de modo que luego sea posible agregar lógica en get/set sin causar problemas. En mi humilde opinión, esto prueba que las variables públicas deberían haberse hecho indistinguibles de las propiedades.


1 Suponiendo tipo de su proyecto en realidad permite a sus clases para ser utilizados por otros proyectos (es decir ActiveX DLL, OCX, o ActiveX EXE).
2 En los procedimientos Property Get, Property Let y Property Set.

+0

En VB6, las variables públicas definidas en clases se compilan bajo las coberturas como propiedades. Esto puede verse utilizando una herramienta como OLE View para inspeccionar el dll después de compilarlo. Son equivalentes a las "propiedades implementadas automáticamente" que mencionaste. – tcarvin

+0

Lo siento, cuando vi "En VB6 puede cambiar una variable pública en una propiedad sin romper los clientes" Pensé que podría dar la impresión al OP de que VB6 tiene variables públicas en las clases expuestas. – tcarvin

+1

También tenga en cuenta que las variables pueden pasar ByRef a una función y los cambios funcionarán como se espera. Este NO es el caso de las propiedades. Espero que esta sea la razón por la que se dividieron en campos y propiedades en .NET/IL. – Deanna

2
  • Público significa que es accesible por cualquier otra clase que haga referencia a su proyecto/dll.
  • amigo significa que es accesible por cualquier otro clases dentro de su montaje (lo que sólo el exe que hizo la clase en)

variable y propiedad son allmost la misma. Propiedad es preferido ya que se puede establecer si otras clases pueden establecer u obtener la variable (propiedad encapsula la variable)

En C# es el mismo, sólo que el uso interno en lugar de amigo

1

propiedad privada son aquellas propiedades que utilizamos nosotros y otros miembros de la familia. Pero, las propiedades públicas son aquellas propiedades que son utilizadas por todas las personas de nuestra comunidad, la sociedad o el país.

+0

Una analogía tan simple, pero creo que realmente la describe bien. –

Cuestiones relacionadas