Mam abstrakcyjna klasa podstawowa:Dlaczego mogę abstrakcyjne zastąpić metodę abstrakcyjną?
abstract class Foo
{
virtual void DoSomeStuff()
{
//Do Some Stuff
}
abstract void DoSomeCrazyStuff();
}
a inna klasa abstrakcyjna pochodzący z tego:
abstract class Bar : Foo
{
abstract override void DoSomeStuff();
abstract override void DoSomeCrazyStuff();
}
rozumiem dlaczego chcesz chcą abstrakcyjnego ręcznym DoSomeStuff()
- będzie wymagać nowego implementację dalsze pochodne klasy. Ale nie mogę zrozumieć, dlaczego chciałbyś abstrakcyjne zastąpić DoSomeCrazyStuff()
. O ile wiem, jest to zbędne - jestem prawie pewien, że usunięcie go będzie miało zerowy negatywny wpływ.
Czy jest jakiś przypadek, w którym abstrakcyjne pomijanie abstrakcji robi coś pożytecznego? Jeśli nie, to dlaczego nie ma ostrzeżenia kompilatora informującego mnie, że to, co napisałem, nic nie robi?
ten link może pomóc - http://msdn.microsoft.com/en-us/library/ms173150%28VS.80%29.aspx – terrybozzio
To należy do kategorii "ponieważ specyfikacja mówi tak". –
Wygląda to na dobre żądanie funkcji dla Roslyn. –