mam dwie klasyużywać nowych słów kluczowych w języku C#
class A
{
public virtual void Metod1()
{
Console.WriteLine("A.Method1");
}
}
class B : A
{
public new void Metod1()
{
Console.WriteLine("B.Method1");
}
}
Potem napisać kod, który deklaruje instancje tych klas i wzywa ich metody
static void Main(string[] args)
{
A a = new B();
a.Metod1();
B b = new B();
b.Metod1();
Console.ReadKey();
}
dałem następujący wynik:
A.Method1
B.Method1
Ale kiedy usunę słowo kluczowe nowe z metody signature1 klasy B i uruchomię metodę Main, otrzymałem ten sam wynik. Pytanie: Czy nowe słowo kluczowe jest podpisem metod tylko dla lepszej czytelności?
Edytuj: Czy są przypadki, w których nie możemy obejść się bez nowego słowa kluczowego?
trzeba użyć nadpisanie lub nowy w klasie B bacause inaczej ukrywa metodę elementu nadrzędnego za .. domyślnym jest nowy więc jeśli nie umieści nowy to nie daje błąd i przebiegają bez zarzutu. –
Nota bierna: Rozważ "pomieszaj czytelników i użytkowników kodu", aby być głównym użyciem "nowego" w takim kontekście. Zdarzają się przypadki, w których korzystanie z niego może poprawić czytelność (tj. Konieczność wyprowadzenia klasy dla nieprzyjaznej klasy bazowej), ale w większości przypadków trudniej jest zrozumieć, kiedy zostanie wywołana metoda klasy bazowej i kiedy zostanie uzyskana. –