Что делает это двоеточие (:) средний?

Перед this ключевое слово является двоеточием. Кто-либо может объяснить, что двоеточие означает в этом контексте? Я не полагаю, что это - inhertance.

Спасибо

using System;

namespace LinkedListLibrary
{
    class ListNode
    {
        private object data;
        private ListNode next;

        public ListNode(object dataValue)
            : this(dataValue, null)
        {
        }

        public ListNode(object dataValue, ListNode nextNode)
        {
            data = dataValue;
            next = nextNode;
        }

        public ListNode Next
        {
            get
            {
                return next;
            }
            set
            {
                next = value;
            }
        }
        public object Data
        {
            get
            {
                return data;
            }
        }


    }
}
36
задан Zach Smith 23 January 2017 в 11:03
поделиться

7 ответов

Он (вместе с ключевым словом this ) инструктирует конструктор вызвать другой конструктор того же типа перед тем, как он сам выполнится.

Следовательно:

public ListNode(object dataValue)
    : this(dataValue, null)
{
}

фактически становится:

public ListNode(object dataValue)
{
    data = dataValue;
    next = null;
}

Обратите внимание, что вы можете использовать base вместо this , чтобы указать конструктору вызвать конструктор в базовом классе.

53
ответ дан 27 November 2019 в 05:31
поделиться

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

Таким образом, в этом случае

public ListNode(object dataValue)

является вызывая

public ListNode(object dataValue, ListNode nextNode)

с null в качестве второго параметра через : this (dataValue, null)

, также стоит отметить, что ctor, вызываемый через двоеточие, выполняется перед ctor, который был вызван для инициализации объекта.

12
ответ дан 27 November 2019 в 05:31
поделиться

Это означает, что перед запуском тела необходимо запустить конструктор с параметрами объекта и ListNode.

9
ответ дан 27 November 2019 в 05:31
поделиться

Он вызывает другой конструктор ListNode. Вы можете сделать то же самое с ключевым словом base для вызова конструктора класса, от которого вы производите.

6
ответ дан 27 November 2019 в 05:31
поделиться

Аргументы цепочки конструктора. Также существует ": base ()" для связывания вызова конструктора с базовым типом.

2
ответ дан 27 November 2019 в 05:31
поделиться

Нет,

3
ответ дан 27 November 2019 в 05:31
поделиться

Код сообщает другому конструктору выполнить его с предоставленными аргументами до того, как будет выполнено тело текущего конструктора.

2
ответ дан 27 November 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: