Czy chcesz zareagować na tę wiadomość? Zarejestruj się na forum za pomocą kilku kliknięć lub zaloguj się, aby kontynuować.

Zmienny typ parametru

2 posters

Go down

Zmienny typ parametru Empty Zmienny typ parametru

Pisanie by emielek Pią Kwi 11, 2014 10:34 am

Hej.
Można ustawić żeby typ parametru przekazywanego do metody był zmienny? Mam taką konstrukcję:

interface IPointy
abstract class Shape
class Circle : Shape
class Hexagon : Shape, IPointy
class Triangle : Shape, IPointy
class Oval :Circle
class Program

Chcę napisać statyczną metodę, która sprawdzałaby czy obiekt danej klasy ma dostęp do interfejsu. Coś w tym stylu:
Kod:
public static void HavePoint(Hexagon parametr)
        {
            if (parametr is IPointy)
                Console.WriteLine(((IPointy)parametr).GetNumbersOfPoints());
            else
                Console.WriteLine("Not pointy......");
        }
tylko żeby obsługiwało wszystkie typy parametrów czy to trójkąt czy koło itd. Jest możliwość żeby ustawić to z jednym parametrem przekazywanym do metody HavePoint?

emielek

Liczba postów : 27
Join date : 04/02/2014
Age : 41

Powrót do góry Go down

Zmienny typ parametru Empty Re: Zmienny typ parametru

Pisanie by Fores Pią Kwi 11, 2014 4:16 pm

Kod:
public static void HavePoint(Shape parametr)
       {
           if (parametr is IPointy)
               Console.WriteLine(((IPointy)parametr).GetNumbersOfPoints());
           else
               Console.WriteLine("Not pointy......");
       }

Powinno dzialac. I taka mala uwaga, metody tego typu raczje powinny zwracac prosta wartosc typu bool, a nie wyswietlac informacje.

@edit
a teraz tak na to patrze i mam kolejna mala uwage. Nazwales metode "HavePoint", a mimo to wyswietlasz informacje o ilosci punktow - dwie rozne rzeczy.

imo powinno byc mniej wiecej tak:

Kod:
public static bool HavePoint(Shape parametr)
        {
            return parametr is IPointy;
        }

        static void Main(string[] args)
        {
            var oval = new Oval();

            if (HavePoint(oval))
            {
                Console.WriteLine("Pointy - number of points: " + ((IPointy)oval).GetNumbersOfPoints());
            }
            else
            {
                Console.WriteLine("Not pointy......");
            }
            Console.ReadLine();
        }


A i jak chcesz zmienny typ parametru to mozesz rowniez uzyc generic methods, ale w tym przypadku to jest zbedne, skoroTwoja hierarchia klas opiera sie na dziedziczeniui.
Fores
Fores

Liczba postów : 73
Join date : 30/05/2013
Age : 34
Skąd : Katowice

Powrót do góry Go down

Zmienny typ parametru Empty Re: Zmienny typ parametru

Pisanie by emielek Pią Kwi 11, 2014 4:41 pm

Dzięki za odpowiedź i dodatkowe info

emielek

Liczba postów : 27
Join date : 04/02/2014
Age : 41

Powrót do góry Go down

Zmienny typ parametru Empty Re: Zmienny typ parametru

Pisanie by Sponsored content


Sponsored content


Powrót do góry Go down

Powrót do góry


 
Pozwolenia na tym forum:
Nie możesz odpowiadać w tematach