“Use the new keyword if hiding was intended” warning

前端 未结 4 1392
你的背包
你的背包 2020-12-13 05:32

I have a warning at the bottom of my screen:

Warning 1 \'WindowsFormsApplication2.EventControlDataSet.Events\' hides inherited member \'Syste

相关标签:
4条回答
  • 2020-12-13 05:55

    @wdavo is correct. The same is also true for functions.

    If you override a base function, like Update, then in your subclass you need:

    new void Update()
    {
      //do stufff
    }
    

    Without the new at the start of the function decleration you will get the warning flag.

    0 讨论(0)
  • 2020-12-13 05:56

    Your class has a base class, and this base class also has a property (which is not virtual or abstract) called Events which is being overridden by your class. If you intend to override it put the "new" keyword after the public modifier. E.G.

    public new EventsDataTable Events
    {
      ..
    }
    

    If you don't wish to override it change your properties' name to something else.

    0 讨论(0)
  • 2020-12-13 05:56

    In the code below, Class A implements the interface IShow and implements its method ShowData. Class B inherits Class A. In order to use ShowData method in Class B, we have to use keyword new in the ShowData method in order to hide the base class Class A method and use override keyword in order to extend the method.

    interface IShow
    {
        protected void ShowData();
    }
    
    class A : IShow
    {
        protected void ShowData()
        {
            Console.WriteLine("This is Class A");
        }
    }
    
    class B : A
    {
        protected new void ShowData()
        {
            Console.WriteLine("This is Class B");
        }
    }
    
    0 讨论(0)
  • 2020-12-13 06:10

    The parent function needs the virtual keyword, and the child function needs the override keyword in front of the function definition.

    0 讨论(0)
提交回复
热议问题