Подтвердить что ты не робот

"Использовать новое ключевое слово, если укрытие было предназначено" предупреждение

У меня есть предупреждение внизу экрана:

Предупреждение 1 'Шкуры WindowsFormsApplication2.EventControlDataSet.Events унаследованный член 'System.ComponentModel.MarshalByValueComponent.Events'. Используйте новый если укрытие было предназначено. C:\Users\MYCOMPUTER\Desktop\Event Управление \WindowsFormsApplication2\EventControlDataSet.Designer.cs 112 32 eventControl

Если я дважды щелкнул по нему, это будет выглядеть следующим образом:

public EventsDataTable Events {
    get {
        return this.tableEvents;
    }

Может ли кто-нибудь сказать мне, как избавиться от этого?

4b9b3361

Ответ 1

У вашего класса есть базовый класс, и этот базовый класс также имеет свойство (которое не является виртуальным или абстрактным), называемое События, которое переопределяется вашим классом. Если вы намерены переопределить его, поместите ключевое слово "новое" после публичного модификатора. Например.

public new EventsDataTable Events
{
  ..
}

Если вы не хотите переопределять его, измените имя своего свойства на другое.

Ответ 2

@wdavo является правильным. То же самое верно и для функций.

Если вы переопределите базовую функцию, например Update, то в вашем подклассе вам нужно:

new void Update()
{
  //do stufff
}

Без нового в начале отклонения функции вы получите предупреждающий флаг.

Ответ 3

В приведенном ниже коде Class A реализует интерфейс IShow и реализует его метод ShowData. Class B наследует Class A. Чтобы использовать метод ShowData в Class B, нам нужно использовать ключевое слово new в методе ShowData, чтобы скрыть метод базового класса Class A и использовать ключевое слово override, чтобы расширить метод,

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");
    }
}