У меня есть класс (Класс B), который наследовал другой класс (Класс A), который содержит виртуальные методы.
По ошибке я опустил override
ключевое слово при объявлении (предполагаемый быть) метод переопределения в Классе B.
Класс A
public class ClassA{
public virtual void TestMethod(){
}
}
Класс B
public class ClassB : ClassA{
public void TestMethod(){
}
}
Код скомпилирован без проблемы. Кто-либо может объяснить почему?
Это не двусмысленно. Он должен компилироваться с предупреждением о том, что вы должны указать либо "new", либо "override", и что по умолчанию фактически используется "new".
Он определенно выдает предупреждение, когда я пытаюсь скомпилировать этот код - когда вы говорите, что он компилируется "нормально" и "без проблем", вы игнорируете предупреждения?
класс B должен быть
public class ClassB : ClassA{
public override void TestMethod(){
}
}
но он может компилироваться без переопределения - он должен выдать предупреждение, что если это было задумано, вам нужно добавить новое ключевое слово
public class ClassB : ClassA{
public new void TestMethod(){
}
}
проверьте это для получения дополнительной информации
Компилятор C # выдает предупреждение. Я советую вам всегда компилировать с «предупреждениями как ошибками».