Operator new przy definicji metody?

0

O co chodzi z operatorem new przed nazwą funkcji w jej definicji, i czy operator gdyby tam nie występował, to da ten sam efekt? Chodzi mi tylko o ten jeden przypadek, nie wchodząc w szczegóły na temat metod polimorficznych.

Czy poniższe zapisy są równoważne?

    class Pochodna : Bazowa
    {
        public new void Metoda1()
        {
            Console.WriteLine("Klasa pochodna");
        }
    }
    class Pochodna : Bazowa
    {
        public void Metoda1()
        {
            Console.WriteLine("Klasa pochodna");
        }
    }
0
SkyLiNe napisał(a)

czy operator gdyby tam nie występował, to da ten sam efekt?

Skompiluj, uruchom, sprawdź.

0

:) lepsza taka odpowiedź niż żadna (-,-).
Skompilowałem, uruchomiłem, sprawdziłem i dalej nie wiem - zachowują się tak samo, ale to jeszcze o niczym nie świadczy.

0

MSDN będzie Twoją biblią:

When used as a modifier, the new keyword explicitly hides a member inherited from a base class. When you hide an inherited member, the derived version of the member replaces the base-class version. Although you can hide members without the use of the new modifier, the result is a warning. If you use new to explicitly hide a member, it suppresses this warning and documents the fact that the derived version is intended as a replacement.

0

Hmm.. Z tego co rozumiem.. Monolog kompilatora:
"Hola! Jesteś pewny, że wiesz co robisz? Bo nie widzę new...".
Dzięki!

1

Właściwie to racja :]

new (swoją drogą - tutaj to nie jest operator) nic właściwie nie zmienia, to po prostu tylko informacja dla kompilatora (i zapominalskiego programisty ;) ) że ta metoda, owszem, przykrywa bazową i owszem, jest to celowe.

Takie upewnienie się.

Ale jeśli nie będzie new to kod również się skompiluje, najwyżej z warningiem.

0

Fachowo to się chyba nazywa "modyfikator".

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