domingo, 17 de maio de 2009

C# - Sobrecarga do método construtor

Esse post não será mais atualizado nesse blog. Para visualizar esse post em seu novo endereço, acesse:
http://milaneze.com.br/post/2009/05/17/C-Sobrecarga-do-metodo-construtor.aspx


O código no exemplo abaixo desse post mostra uma maneira de fazer a sobrecarga do método construtor usando a palavra-chave this para fazer uma chamada a um construtor através de outro construtor.

Nesse caso, o código:

public mySampleClass() : this(10) { }


é equivalente a:

public mySampleClass()
{
mySampleClass(10);
}


Vamos ao exemplo desse post.

   1:  class Time

   2:  {

   3:      private string h, m, s;

   4:        

   5:      public Time() : this("00", "00", "00") { }

   6:   

   7:      public Time(string hora) : this(hora, "00", "00") { }

   8:   

   9:      public Time(string hora, string minuto) : this(hora, minuto, "00") { }

  10:   

  11:      public Time(Time time) : this(time.h, time.m, time.s) { }

  12:   

  13:      public Time(string hora, string minuto, string segundo)

  14:      {

  15:          h = hora;

  16:          m = minuto;

  17:          s = segundo;

  18:      }

  19:   

  20:      public string ImprimirHora()

  21:      {

  22:          return h + ":" + m + ":" + s;

  23:      }

  24:  }


Usando esse código:

   1:  class Program

   2:  {

   3:      static void Main(string[] args)

   4:      {

   5:          Time hora1 = new Time();

   6:          Console.WriteLine("Hora 1: " + hora1.ImprimirHora());

   7:   

   8:          Time hora2 = new Time("02");

   9:          Console.WriteLine("Hora 2: " + hora2.ImprimirHora());

  10:   

  11:          Time hora3 = new Time("02", "10");

  12:          Console.WriteLine("Hora 3: " + hora3.ImprimirHora());

  13:   

  14:          Time hora4 = new Time("02", "10", "50");

  15:          Console.WriteLine("Hora 4: " + hora4.ImprimirHora());

  16:   

  17:          // o objeto hora4 dessa vez é passado como parâmetro

  18:          Time hora5 = new Time(hora4);

  19:          Console.WriteLine("Hora 5: " + hora5.ImprimirHora());

  20:   

  21:          Console.ReadLine();

  22:      }

  23:  }

Nenhum comentário: