Say mam następujące:Konstruktor łańcuchowym w związku z wywołaniem konstruktora baza
class Base {
public Base (int n) { }
public Base (Object1 n, Object2 m) { }
}
class Derived : Base {
string S;
public Derived (string s, int n) : base(n) {
S = s;
}
public Derived (string s, Object1 n, Object2 m) : base(n, m) {
S = s; // repeated
}
}
Wskazówki jak muszę formalny argument n w obu przeciążeń pochodny, a więc muszę powtórzyć linię N = n;
.
Teraz wiem, że można to zamknąć w osobnej metodzie, ale nadal potrzebujesz tych samych dwóch wywołań metod z obu przeciążenia. Czy istnieje bardziej "elegancki" sposób robienia tego, być może przy użyciu this
w połączeniu z base
?
Jest tak, że mogę mieć prywatnego konstruktora, który bierze jeden argument s
, a pozostałe dwa przeciążenia mogą wywołać ten ... czy może to jest to samo, co oddzielna metoda prywatna?
Co w tym złego właśnie wywołanie innego przeciążenie konstruktora z konstruktora, który akceptuje dodatkowy parametr? 'this (s, n)' zamiast 'base (n, m)' –
Zmodyfikowałem pytanie tak, aby lepiej odzwierciedlało to, co obecnie mam. Zmieniłem typy argumentów przeciążonego podstawowego konstruktora. –
Ach, bardzo dobrze. Nie pisałem tego jako odpowiedź początkowo, ponieważ uznałem, że brakuje mi czegoś oczywistego. Okazuje się, że tak właśnie było. –