implicit i explicit - typ zwracany musi być typem klasy

0

Dlaczego nie przechodzi taki kod:
Klasa Point zawierająca X, Y. Enum Direction, Klasa statyczna DirectionToPoint

         public static implicit operator Point(Direction direction)
        {
            return _directions[(int)direction];
        }

Pokazuje coś o tym, że typ zwracany musi być typem klasy? Tzn tej w której jest wykonywany?
Chcę zaimplementować jawną i nie jawną konwersję tak by te typy o sobie nic nie wiedziały. Jak to ugryźć?

0

W twoim przypadku chcesz zrobić konwersję z Direction do Point, tak? W takim razie metoda musi zwracać obiekt typu Point.

https://msdn.microsoft.com/pl-pl/library/z5z9kes2.aspx

0
Krwawy Młot napisał(a):

Pokazuje coś o tym, że typ zwracany musi być typem klasy? Tzn tej w której jest wykonywany?

Tak.

Chcę zaimplementować jawną i nie jawną konwersję tak by te typy o sobie nic nie wiedziały. Jak to ugryźć?

Nie używając operatorów, tylko wtedy nie będziesz miał konwersji.

0
public static Point ToPoint(Direction direction);  

To działa wiem. Tylko chcę zaimplementować z użyciem konwersji jawnej i niejawnej.

Tak z Direction na Point ale jest to w klasie trzeciej ponieważ ani Direction(enum) ani Point(klasa) nie wiedzą o swoim istnieniu.

Więc nie ma opcji by to zrobić mniej więcej tak jak chcę?
Chyba, że wrzucę enum do klasy(DirectionToPoint) jako hs-a ale wtedy jak inne obiekty będą tworzyły go?

0

Jakim cudem mają nie wiedzieć o swoim istnieniu? Operatory konwersji służą do przekształcenia jednego typu w drugi. Typ, w którym operator jest zdefiniowany musi zatem znać drugi typ.

Inna rzecz - konwersja punktu na kierunek?

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