Использование оператора new

175
18 мая 2019, 19:40

https://docs.microsoft.com/en-us/previous-versions/ms379574(v=vs.80)

ссылка на статью

public class GraphNode<T> : Node<T>
{
    private List<int> costs;
    public GraphNode() : base() { }
    public GraphNode(T value) : base(value) { }
    public GraphNode(T value, NodeList<T> neighbors) : base(value, neighbors) { }
    new public NodeList<T> Neighbors // зачем здесь new?
    {
        get
        {
            if (base.Neighbors == null)
                base.Neighbors = new NodeList<T>();
            return base.Neighbors;
        }            
    }
    public List<int> Costs
    {
        get
        {
            if (costs == null)
                costs = new List<int>();
            return costs;
        }
    }
}
Answer 1

Это не оператор new, а модификатор new, показывающий компилятору, что программист знает о том, что перекрывает (ре-декларирует) свойство/метод/т.п., существующее под таким же именем в базовом классе, и делает это намеренно.

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/new-modifier

Три вида new:

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/new

READ ALSO
Unit Test ASP.NET CORE 2.1 System.NullReferenceException response

Unit Test ASP.NET CORE 2.1 System.NullReferenceException response

Делал модульные тесты для проекта ASPNET CORE

173
Простой файловый менеджер на Mono под Linux

Простой файловый менеджер на Mono под Linux

Необходимо написать простейший проводник или файловый менеджер, который будет работать с НМЖД и внешним USB накопителемДолжны быть функции...

141
Получить данные с двух таблиц

Получить данные с двух таблиц

Для работы с базами данных использую ORM RedBeanPHP

145