Перед 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;
}
}
}
}
Он (вместе с ключевым словом this
) инструктирует конструктор вызвать другой конструктор того же типа перед тем, как он сам выполнится.
Следовательно:
public ListNode(object dataValue)
: this(dataValue, null)
{
}
фактически становится:
public ListNode(object dataValue)
{
data = dataValue;
next = null;
}
Обратите внимание, что вы можете использовать base
вместо this
, чтобы указать конструктору вызвать конструктор в базовом классе.
Это цепочка конструкторов, поэтому конструктор с последующим : этот
вызов будет связываться с ctor, который соответствует подписи.
Таким образом, в этом случае
public ListNode(object dataValue)
является вызывая
public ListNode(object dataValue, ListNode nextNode)
с null в качестве второго параметра через : this (dataValue, null)
, также стоит отметить, что ctor, вызываемый через двоеточие, выполняется перед ctor, который был вызван для инициализации объекта.
Это означает, что перед запуском тела необходимо запустить конструктор с параметрами объекта и ListNode.
Он вызывает другой конструктор ListNode. Вы можете сделать то же самое с ключевым словом base для вызова конструктора класса, от которого вы производите.
Аргументы цепочки конструктора. Также существует ": base ()" для связывания вызова конструктора с базовым типом.
Код сообщает другому конструктору выполнить его с предоставленными аргументами до того, как будет выполнено тело текущего конструктора.