«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Виртуальный и новый в C#: когда переопределить или скрывать методы базового класса?

Виртуальный и новый в C#: когда переопределить или скрывать методы базового класса?

Опубликовано в 2025-01-29
Просматривать:906

Virtual vs. New in C#: When to Override or Hide Base Class Methods?

использование виртуальных и новых ключевых слов в

в C# ] в объектном программировании это обычно определяется в базовом классе, и эти методы переписаны или переопределяются в уроке производных. Хотя как «виртуальные», так и «новые» ключевые слова могут использоваться для изменения объявления метода, они имеют разные методы реализации.

Dirtual Rewriting

] метод, объявленный в базовом классе как «виртуальный», указывая, что подклассы могут быть переписаны.

    разрешить производные классы для предоставления различных методов реализации без разрушения цепочки наследования.
  • Новое ключевое слово
]

укажите новый метод того же названия, что и китайский метод Фонда в уроке производного.

скрыть базовый метод и создать новую реализацию в полученном классе.
  • уничтожить цепочку наследования, что означает, что полученный метод не связан с базовым методом.
  • Пример
рассмотрим следующий код:

база открытого класса {{ public virtual bool dosomething () {return false;} } Открытый класс получен: база: база {{ Public override bool dosomething () {return true;} }

Если мы создадим полученный экземпляр и сохраним его в переменной базового типа, вызов dosomething () вызовет метод переписывания в получении:

]
public class Base
{
    public virtual bool DoSomething() { return false; }
}

public class Derived : Base
{
    public override bool DoSomething() { return true; }
}

открытый класс {{ Public new bool dosomething () {return true;} }

Base a = new Derived();
a.DoSomething(); // 返回 true
Когда переписать Virtual и New

]

public class Derived : Base
{
    public new bool DoSomething() { return true; }
}
            
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3