Что означает это двоеточие (:)?

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

Спасибо

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;
            }
        }


    }
}

7 ответов

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

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

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

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

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

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

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

Так что в этом случае

public ListNode(object dataValue)

звонит

public ListNode(object dataValue, ListNode nextNode)

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

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

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

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

Нет, это позволяет выполнить существующую перегрузку конструктора (с двумя параметрами) перед выполнением тела нового конструктора.

Это самый простой способ повторно использовать код конструктора в нескольких перегрузках конструктора.

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

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

Другие вопросы по тегам