Witam! Po moich wcześniejszych wypocinach(kółko i krzyżyk, symulator LOTTO), które były pisane w jednej klasie i milionach metod, postanowiłem się wziąć za dokładne zrozumienie klas, obiektów, operatorów i po co to wszystko się robi. Korzystam z kursu ze strony CentrumXP.pl - http://www.centrumxp.pl/dotNet/323,07-Tworzenie-oraz-inicjalizacja-obiektow.aspx (może byście przy okazji powiedzieli, czy warto z niego korzystać) i przy rozdziale o konstruktorach napotkałem problem przy zagadnieniu: Wywołanie jednego konstruktora poprzez drugi. Według mnie autor tekstu nie wywołał pierwszego konstruktora w drugim, bo przy słówku "this" jako parametr podał "parametr1", a w pierwszym konstruktorze parametrem jest "parametr", czyli dwie różne zmienne. Czy autor tekstu popełnił błąd, czy ja źle to rozumiem? Jeśli to drugie, to moglibyście to jakoś wytłumaczyć na polski jak to powinienem zrozumieć? Z góry dzięki!
Wywołanie jednego konstruktora poprzez drugi
Aby uzyskać taki efekt musimy użyć słówka „this”.
class Echo
{
string napis;
string napis2;
public Echo(string parametr)
{
napis = parametr;
}
public Echo(string parametr1, string parametr2) : this(parametr1)
{
napis2 = parametr2;
}
public void Napisz()
{
System.Console.WriteLine(napis);
System.Console.WriteLine(napis2);
}
}
class KlasaGlowna
{
static void Main()
{
Echo obiekt = new Echo("Pierwszy parametr.", "Drugi parametr.");
obiekt.Napisz();
System.Console.ReadLine();
}
}
W tym przykładzie mamy dwa konstruktory, z jednym oraz z dwoma parametrami. W definicji drugiego wywołujemy pierwszy poprzez słówko „this” oraz przekazujemy do pierwszego pierwszy parametr. W linijce:
Echo obiekt = new Echo("Pierwszy parametr.", "Drugi parametr.");
wywołujemy drugi konstruktor (dwa parametry), ten natomiast wywołuje pierwszy przekazując mu wartość „Pierwszy parametr.". Tak więc wartość zmiennej „napis” jest ustalana w pierwszym konstruktorze, który został wywołany przez drugi, natomiast wartość zmiennej „napis2” jest przypisywana w drugim konstruktorze.