Enlace temprano y tardío en C# – Part 1

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.Int32y System.Doublerespectivamente. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *