Przeciążenie funkcji (konstruktora)

0

Na początek cytat z jednego kursu:

Mamy teraz dwie funkcje składowe (na dodatek są to kontruktory!) o tej samej nazwie, ale o różnych parametrach. Możliwość tworzenia wielu funkcji o tej samej nazwie, ale różnych listach parametrów, nazywa się przeciążaniem funkcji. W przykładzie przeciążyliśmy konstruktor, ponieważ to konstruktory są najczęściej przeciążane. Nic jednak nie stoi na przeszkodzie, by przeciążać zwykłe funkcje składowe.

I fragmenty kodu:

[C#]
public ModelSamochodu(string KolorFabryczny)
{
    Kolor = KolorFabryczny;
}



[C#]
public ModelSamochodu()
{
    Kolor = "rdzawy";
}

Dwa konstruktory klasy ModelSamochodu, czyli wszystko prawidłowo. Tylko tak się zastanawiam, przy użyciu pierwszego konstruktora trzeba podać parametr. Jeśli oba konstruktory nie będą wymagały parametrów, skąd kompilator będzie wiedział, którego chcemy użyć?

Pytanie być może banał, jednak nie znam odpowiedzi - z góry za takowe dziękuję :)

0

no to wtedy chyba zasygnalizuje błąd

0

Error 1 Type 'ModelSamochodu' already defines a member called 'ModelSamochodu' with the same parameter types

No tak, ale zakładam, że jeśli zrobiłbym dwa konstruktory (w ogóle dwie metody) mające np. po jednym parametrze, debuger i tak wyświetliłby błąd. Nasunęło mi się więc kolejne pytanie, czy w C# można tworząc funkcję, ustalić parametry domyślne (takie, których użytkownik nie musi podawać, są już zdefiniowane - nie wyjaśniam nikomu, sprawdzam, czy mój zamysł jest prawidłowy ;) ). Wtedy funkcja posiadała by np. jeden bezużyteczny, pusty parametr, który i tak nie będzie zabierał zbyt dużo pamięci a debugger nie wyświetlałby błędu.

0

W C# nie ma parametrow domyslnych. Ale prosto to rozwiazac przez atrybuty. Wpierw stworz w swojej klasie zmiene prywatne ktore beda mialy wartosci ustawiane podczas tworzenia obiektu. Nastepnie do odpowiednich zmiennych stworz atrybuty w ktorych bedziesz sobie modyfikowal wartosci przed wywolaniem metody, ktora rownie dobrze moze byc bez parametrow.

1 użytkowników online, w tym zalogowanych: 0, gości: 1