Применение модификаторов virtual/override

200
05 октября 2018, 20:50

Приведите, пожалуйста, хотя бы один реальный пример использования модификаторов virtual/override, где модификаторы virtual/ovveride оказываются действительно необходимы, и их нельзя заменить модификатором new.

Answer 1

Предположим, есть 2 класса

public class MyOverrideObject
{
    public override string ToString()
    {
        return "-->Overrided<--";
    }
}
public class MyNewObject
{
    public new string ToString()
    {
        return "-->NEW<--";
    }
}

И код вывода в консоль

Console.WriteLine("{0}\n{1}", new MyOverrideObject(), new MyNewObject());

Вывод

-->Overrided<--
UserQuery+MyNewObject

Как видно, скрытие метода не сработало, так как консоль не знает о конкретных типах, что в неё отправили и не проверяет этого. По сути везде, где принимающий класс не в курсе точного типа аргумента, скрытие метода работать не будет. Потому использовать его я крайне не рекомендую.

READ ALSO
Вернуть Enum или Class из Dictionary&lt;string, object&gt;

Вернуть Enum или Class из Dictionary<string, object>

Помогите адаптировать методы для C# из Java (методы используются в расширении базового DictionaryТема здесь

203
Чтение из C# Stream в коде C++

Чтение из C# Stream в коде C++

Есть ли способ прочитать данные из Stream, созданного в C# в unmanaged C++ коде? Заранее благодарен)

237
Почему VS ругается на синтаксис SQL запроса но все равно его выполняет?

Почему VS ругается на синтаксис SQL запроса но все равно его выполняет?

Только изучаю студию, решил исследовать возможности встроенного Server Explorer на предмет хватит ли его на простые операции типа добавить таблицу,...

261
EF lazy loading

EF lazy loading

Столкнулся с такой проблемойСтоит lazy loading в конструкторе контекста (db first) Когда вытаскиваю запись с базы то вместе с ней приходят все navigation...

213