Typ enum dostępny poza klasą

0

Stworzyłem taką klasę:

class KolorowyPunkt: Punkt
    {
        public enum Kolor { bialy, czerwony, niebieski, zielony };
        private Kolor kolor;

        public KolorowyPunkt(): base()
        {
            kolor = Kolor.bialy;
        }

        public void ustawKolor(Kolor kolor)

        {
            this.kolor = kolor;
        }
      
    }

W klasie stworzyłem typ Kolor, który może przybierać określone wartości.

Poza klasą wywołuję metodę ustawKolor w sposób następujący:

 punkt.ustawKolor(KolorowyPunkt.Kolor.czerwony);

Pytanie:
Czy to jest prawidłowy sposób ustawiania koloru? Czy taka ścieżka jest właściwa (Klasa.Typ.Wartość)?

0
  • Możesz zrobić dodatkowy konstruktor: public KolorowyPunkt(Kolor kolor);
  • Możesz zrobić to tak jak zrobiłeś, czyli w postaci metody. Też ok;
  • Możesz wyrzucić tego enuma public enum Kolor { bialy, czerwony, niebieski, zielony } poza klasę, do osobnego pliku. Nie będziesz musiał używać ciągle prefiksów w postaci nazwy klasy KolorowyPunkt. Ja tak generalnie robię. Mam sobie katalog Enums i tam trzymam takie typy;

Wiele jest możliwości. Zależy co chcesz osiągnąć.

0

Dzięki za odpowiedź. W sumie nie mam określonego celu. Po prostu uczę się C# i zastanawiałem się, czy to co napisałem nie jest jakimś udziwnieniem.

0

@GronostajBezPestek: to nie jest udziwnienie, po prostu zagnieżdżone prywatne enumy przydają się niezmiernie rzadko. One mają sens tylko do przekazywania między metodami prywatnymi jednej klasy.
Częściej może przydać się zagnieżdżony publiczny enum, bo wtedy od razu widać, że to nie jest jakiś uniwersalny typ tylko ściśle związany z jakąś klasą (np. wynik działania jakiejś metody).
Najczęściej jednak stosuje się publiczne, samodzielne enumy. Tylko nie tak, jak to robi @grzesiek51114, bo enumy powinny znajdować się blisko typów, które je używają, a nie w jakimś specjalnym, oddzielnym katalogu.

0

Czy ktoś może mi wyjaśnić łopatologicznie ten fragment? Będę wdzięczny. Nie chcę mojej własnej interpretacji podawać bo źle się to skończy, a może jakaś dobra duszyczka ma chwilkę.

 public void ustawKolor(Kolor kolor)

        {
            this.kolor = kolor;
        }

czemu mamy tutaj 'kolor kolor'?

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