Foros del Web » Programación para mayores de 30 ;) » .NET »

Que es el enlace en tiempo de ejecución y en tiempo de compilacion?

Estas en el tema de Que es el enlace en tiempo de ejecución y en tiempo de compilacion? en el foro de .NET en Foros del Web. Bueno simplemente eso, tengo esa duda. Precisamente el enlace entre que cosas se hace en tiempo de compilación o de ejecución? Saludos!....
  #1 (permalink)  
Antiguo 02/12/2005, 15:45
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Que es el enlace en tiempo de ejecución y en tiempo de compilacion?

Bueno simplemente eso, tengo esa duda. Precisamente el enlace entre que cosas se hace en tiempo de compilación o de ejecución?
Saludos!.
__________________
Add, never Remove
  #2 (permalink)  
Antiguo 02/12/2005, 21:50
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
http://msdn.microsoft.com/library/de...netchapt05.asp
(Reflection and Late Binding)

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 03/12/2005, 05:40
Avatar de metalkr  
Fecha de Ingreso: julio-2005
Mensajes: 17
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta

Enlace temprano: cuando utilizamos un objeto que instanciamos, que fue declarado como tal. Es decir, se le asigna el espacio en memoria necesario, en el código el compilador puede detectar errores antes de ejecutar el programa, en el caso de Visual Studio se le proporciona el autocomplemento de código:

miClase clase = new miClase ();

clase.Abrir ();
clase.nombre = "Hola";

Enlace Tardío: el uso que se le de al objeto solo empieza en tiempo de ejecución. Nos sirve cuando no tenemos la certeza de empezar a utilizar algun tipo. Es más susceptible a errores de tiempo de ejecución:

object clase;

clase = new miClase();
clase.Abrir();

Bueno, esa es la idea..
  #4 (permalink)  
Antiguo 03/12/2005, 09:42
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Haber si entendí la idea... por ejemplo, generalmente defino una variable global para el formulario que estoy ejecutando de esta forma:

MiClase Mivariable;

........ 'Estos son los manejadores de eventos

Private Sub Button1_Click(...) Handles Button1.Click

MiVariable = new MiClase();

End Sub

Ahí estoy aplicando el enlace en tiempo de ejecución, y si hubiera puesto en la primer linea MiClase MiVariable = new MiClase(); ahí estaría aplicando el enlace en tiempo de compilación. Es así?.
Muchas gracias por tu respuesta.
Xknown, excelente tu link, ya me voy a poner a leerlo, todavía no termino de leer el que me pasaste de reflection!, esta interesantisimo las cosas que se pueden hacer.
Saludos, mucha suerte!.
__________________
Add, never Remove
  #5 (permalink)  
Antiguo 03/12/2005, 20:44
Avatar de metalkr  
Fecha de Ingreso: julio-2005
Mensajes: 17
Antigüedad: 18 años, 9 meses
Puntos: 0
Hola
Veo que utilizas VB.
Los tipos de enlace, se refieren al momento en el que se le estable la referecia entre la variable-objeto y el objeto.
El enlace temprano ó de tiempo de compilación, es cuando nosotros declaramos una variable y le asignamos el tipo de dato que va a trabajar.

Dim miObjeto as New MiClase

Cuando hacemos esto, ya le indicamos al compilador que tipo va a manejar la variable "miObjeto", y que miembros son de esa clase. Lo que obtenemos es mayor velocidad en el código

miObjeto.Nombre = "Adan"
miObjeto.Guardar()

Al utilizar VisualStudio, tendremos IntelliSense de las clases del CLR ó de nuestras propias clases.

El enlace tardío ó de tiempo de ejecución establece las referencias entre la variable y el objeto cuando se esté ejecutando el programa. El código se vuelve más lento, y tenemos que colocar manejadores de errores, por que no se conoce el objeto que va a manjar la variable, pero con "Late Binding", tenemos mayor flexividad ya que con una misma variable podemos manejar la referencia a varios objetos. Por eso tenemos que declararla como el tipo generico "Object".

Dim miObjeto as Object

miObjeto = New Casa()
miObjeto.Abrir()
miObjeto.Dispose() 'se medio libera el objeto

miObjeto = New Carro()
miObjeto.Marca = "Ford"
miObjeto.Acelerar();
miObjeto.Dispose()
.
.
  #6 (permalink)  
Antiguo 04/12/2005, 08:03
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
jajaa este si que es un nuevo lenguaje...disculpa, no se en lo que estaba pensando...

[quote=mariano_donati]

MiClase Mivariable;

........ 'Estos son los manejadores de eventos

Private Sub Button1_Click(...) Handles Button1.Click

MiVariable = new MiClase();

End Sub

[quote]

Entiendo completamente, el enlace, ya sea en tiempo de compilación o en tiempo de ejecución, se refiere cuando se asigna el tipo de dato al objeto.
Entonces, mi ejemplo es válido? en ese ejemplo, estaría aplicando un enlace tardío?.
Muchas gracias por tu paciencia.
Saludos!.
__________________
Add, never Remove
  #7 (permalink)  
Antiguo 04/12/2005, 09:02
Avatar de metalkr  
Fecha de Ingreso: julio-2005
Mensajes: 17
Antigüedad: 18 años, 9 meses
Puntos: 0
Si entendiste, pero sigues aplicando el enlace temprano. Igual no confundas la sintáxis de vb.net y c#
  #8 (permalink)  
Antiguo 04/12/2005, 09:15
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Claro, tenés razón. Ahora entiendo lo que me decías del intellisense. Muchas gracias metalkr.
Otra cosa, por eso me reía, porque hice cualquier cosa con el código que escribí para mostrarte el ejemplo. Como vi que me lo habías hecho en C#, entonces quise hacertelo en C#, que estoy aprendiendo su sintaxis en estos momentos, pero como estoy tan metido con VB, entonces el manejador de eventos lo hice con la sintaxis de VB. No fue para confundir, simplemente fue algo automático.

Mil gracias metalkr por tu explicación.
Saludso!.
__________________
Add, never Remove
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:33.