Cuando un objeto se asigna a una variable de objeto del tipo específico, el compilador de C# realiza el enlace con la ayuda de .NET Framework . C# realiza dos tipos diferentes de enlaces que son:
- Enlace temprano o enlace estático
- Enlace tardío o enlace dinámico
Enlace temprano
Reconoce y comprueba los métodos o propiedades durante el tiempo de compilación. En este enlace, el compilador ya sabe qué tipo de objeto es y cuáles son los métodos o propiedades que tiene, aquí los objetos son objetos estáticos. El rendimiento del enlace anticipado es rápido y fácil de codificar. Disminuye el número de errores en tiempo de ejecución.
Ejemplo:
// C# program to illustrate the // concept of early binding using System; class Geeks { // data members public string name; public string subject; // public method public void details(string name, string subject) { this.name = name; this.subject = subject; Console.WriteLine("Myself: " + name); Console.WriteLine("My Favorite Subject is: " + subject); } } // Driver class class GFG { // Main Method static void Main(string[] args) { // creating object of Geeks class Geeks g = new Geeks(); // Calling the method of Geeks class g.details("Ankita", "C#"); // Calling "mymethod()" gives error // because this method does not // belong to class Geeks or compiler // does not know mymethod() at compile time g.mymethod(); } }
Error de tiempo de compilación:
prog.cs(34, 5): error CS1061: el tipo ‘Geeks’ no contiene una definición para ‘mimétodo’ y no se pudo encontrar ningún método de extensión ‘mimétodo’ del tipo ‘Geeks’. ¿Te falta una referencia de ensamblado?
prog.cs(5, 7): (Ubicación del símbolo relacionado con el error anterior)
Explicación: En el ejemplo anterior, tenemos una clase llamada Geeks . Esta clase contiene el método de detalles() . Aquí, el compilador ya conoce las propiedades y métodos presentes en Geeks . Pero cuando intentamos llamar a mymethod() , arrojará un error porque el compilador no conoce este método.
Enlace tardío
En el enlace tardío, el compilador no sabe qué tipo de objeto es y cuáles son los métodos o propiedades que tiene, aquí los objetos son objetos dinámicos. El tipo de objeto se decide sobre la base de los datos que contiene en el lado derecho durante el tiempo de ejecución. Básicamente, el enlace tardío se logra mediante el uso de métodos virtuales . El rendimiento del enlace en tiempo de ejecución es más lento que el enlace en tiempo de ejecución porque requiere búsquedas en tiempo de ejecución.
Ejemplo: A continuación, programa el obj que contiene datos de tipo entero y obj1 que contiene datos de tipo doble. Pero el compilador no los resuelve en tiempo de compilación. En tiempo de ejecución, estos objetos dinámicos se detectan y se convierten en System.Int32
y System.Double
respectivamente. Es por eso que el proceso de resolución en tiempo de ejecución se denomina enlace tardío.
// C# program to illustrate the // concept of late binding using System; class GFG { static void Main() { // Dynamic objects dynamic obj = 4; dynamic obj1 = 5.678; // Display the type of objects Console.WriteLine("The type of the objects are :"); // GetType() method is // used to get the type Console.WriteLine(obj.GetType()); Console.WriteLine(obj1.GetType()); } }
Producción :
The type of the objects are : System.Int32 System.Double
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA