Invocando un constructor sobrecargado usando esta palabra clave en C#

Requisito previo: Constructores en C#
C# proporciona una poderosa palabra clave conocida como esta palabra clave y esta palabra clave tiene muchos usos. Aquí usamos esta palabra clave para llamar a un constructor sobrecargado desde otro constructor.
Puntos importantes:
 

  • Cuando usa esta palabra clave para llamar a un constructor, el constructor debe pertenecer a la misma clase.
  • También puede pasar el parámetro en esta palabra clave.
  • Esta palabra clave siempre apunta a los miembros de la misma clase en la que se utiliza.
  • Cuando usa esta palabra clave, le dice al compilador que invoque el constructor predeterminado. O en otras palabras, significa un constructor que no contiene argumentos.
    Sintaxis:
     
class X 
{

   public X: this()
   {

      // Code..

   }
}
  • esta palabra clave contiene el mismo tipo y el mismo número de parámetros que están presentes en el constructor de llamadas.
    Sintaxis:
     
class X
{
   public X(int x): this(int)
   {

       // Code..
   }
}
  • Este concepto elimina la asignación de replicación de propiedades en la misma clase.

Los siguientes programas ilustran cómo llamar al constructor sobrecargado usando esta palabra clave:
Ejemplo 1:
 

CSharp

// C# program to illustrate how to invoke
// overloaded constructor using this keyword
using System;
class Geek {
 
    // Constructor without parameter
    public Geek()
    {
        Console.WriteLine("Hello! Constructor 1");
    }
 
    // Constructor with parameter
    // Here this keyword is used
    // to call Geek constructor
    public Geek(int a)
    : this()
    {
        Console.WriteLine("Hello! Constructor 2");
    }
}
 
// Driver Class
public class GFG {
 
    // Main method
    static public void Main()
    {
 
        // Create object of Geek class
        Geek obj = new Geek(2);
    }
}

Producción: 
 

Hello! Constructor 1
Hello! Constructor 2

Explicación: En el ejemplo anterior, la clase Geek contiene dos constructores, es decir, Geek() no tiene parámetros y Geek(int a) tiene parámetros. Ahora llamamos al constructor Geek() en Geek(int a) usando la palabra clave this() . Aquí la palabra clave this() no contiene ningún argumento porque el constructor no contiene ningún parámetro. 
Ejemplo 2:
 

CSharp

// C# program to illustrate how to invoke
// overloaded constructor using this keyword
using System;
class Geek {
 
    // Constructor with parameters
    public Geek(int a, double b, string c)
    {
        Console.WriteLine(a);
        Console.WriteLine(b);
        Console.WriteLine(c);
    }
 
    // Constructor with parameters
    // Here this keyword is used
    // to call Geek constructor
    public Geek(int a, int b)
        : this(50, 2.9, "Hello")
    {
        Console.WriteLine(a);
        Console.WriteLine(b);
    }
}
 
// Driver Class
public class GFG {
 
    // Main method
    static public void Main()
    {
 
        // Create object of Geek class
        Geek obj = new Geek(15, 30);
    }
}

Producción: 
 

50
2.9
Hello
15
30

Explicación: En el ejemplo anterior, la clase Geek contiene dos constructores, es decir, Geek(int a, double b, string c) y Geek(int a, int b) y ambos son constructores parametrizados. Ahora llamamos al constructor Geek(int a, double b, string c) en Geek(int a, int b) usando la palabra clave this(50, 2.9, “Hello”). Aquí, la palabra clave this(50, 2.9, “Hello”) contiene el mismo número y tipo de argumento que están presentes en el constructor Geek(int a, double b, string c) .
 

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 *