У меня есть два классаИспользуйте новое ключевое слово в C#
class A
{
public virtual void Metod1()
{
Console.WriteLine("A.Method1");
}
}
class B : A
{
public new void Metod1()
{
Console.WriteLine("B.Method1");
}
}
Тогда я пишу код, объявляющий экземпляры этих классов, и называет их методы
static void Main(string[] args)
{
A a = new B();
a.Metod1();
B b = new B();
b.Metod1();
Console.ReadKey();
}
Я дал следующий результат:
A.Method1
B.Method1
Но когда я удаляю ключевое слово new из метода подписи1 класса B и запускаю главный метод, я получил тот же результат. Вопрос: Является ли новое ключевое слово в подписи методов только для лучшей читаемости?
Редактировать: Есть ли случаи, когда мы не можем обойтись без нового ключевого слова?
вы должны использовать переопределение нового или в классе В bacause иначе он скрывает метод родительского элемента .. по умолчанию является новым, так что если вы не будете размещать новым он дает вам не ошибка и нормально работать. –
Примечание: рассмотрите «путайте читателей и пользователей кода» как основное использование «нового» в таком контексте. Бывают случаи, когда их использование может улучшить читаемость (т. Е. Необходимо получить класс для некоторого недружественного базового класса), но в большинстве случаев это становится сложнее понять, когда будет вызван метод базового класса, и когда он будет получен. –