Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Que es el enlace en tiempo de ejecución y en tiempo de compilacion? (http://www.forosdelweb.com/f29/que-enlace-tiempo-ejecucion-tiempo-compilacion-354723/)

mariano_donati 02/12/2005 15:45

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!.

xknown 02/12/2005 21:50

http://msdn.microsoft.com/library/de...netchapt05.asp
(Reflection and Late Binding)

Saludos

metalkr 03/12/2005 05:40

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..

mariano_donati 03/12/2005 09:42

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!.

metalkr 03/12/2005 20:44

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()
.
.

mariano_donati 04/12/2005 08:03

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!.

metalkr 04/12/2005 09:02

Si entendiste, pero sigues aplicando el enlace temprano. Igual no confundas la sintáxis de vb.net y c#

mariano_donati 04/12/2005 09:15

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!.


La zona horaria es GMT -6. Ahora son las 09:53.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.