On Wednesday, 2 September 2015 at 18:20:49 UTC, Jacob Carlborg wrote:
On 2015-09-02 17:51, Meta wrote:

Isn't that what `override` is for?

No. Think of it like you want to have a new method with the same name as a method in the base class. It's for hiding a method in the base class, not overriding it. See the C# documentation [1].

[1] https://msdn.microsoft.com/en-us/library/435f1dw2.aspx

What's so different with C# 'new' that not to call 'super' in a D overriden method ? (even if C# has itself 'base' instead of 'super')

C#
---
public class BaseC
{
    public int x;
    public void Invoke() { }
}
public class DerivedC : BaseC
{
    new public void Invoke() { }
}
---

D
---
class BaseC
{
    int x;
    void Invoke() { }
}
class DerivedC : BaseC
{
    override void Invoke() { /*super.Invoke() not called*/ }
}
---

apart from a compiler warning (https://msdn.microsoft.com/en-us/library/ms173153.aspx=

Reply via email to