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;
}
}
}
}
これは(this
キーワードとともに)、それ自体が実行される前に、同じ型内の別のコンストラクターを呼び出すようにコンストラクターに指示しています。
したがって:
public ListNode(object dataValue)
: this(dataValue, null)
{
}
効果的に:
public ListNode(object dataValue)
{
data = dataValue;
next = null;
}
base
の代わりにthis
を使用して、基本クラスのコンストラクターを呼び出すようにコンストラクターに指示できることに注意してください。
これはコンストラクターチェーンであるため、後続の_: this
_呼び出しを伴うコンストラクターは、署名に一致するctorにチェーンします。
したがって、この例では
_public ListNode(object dataValue)
_
呼んでいる
_public ListNode(object dataValue, ListNode nextNode)
_
: this(dataValue, null)
を介して2番目のパラメータとしてnullを使用
コロンを介して呼び出されたctorは、オブジェクトを初期化するために呼び出されたctorの前に実行されることにも注意してください。
これは、本体を実行する前に、objectパラメーターとListNodeパラメーターを使用してコンストラクターを実行することを意味します。
他のListNodeコンストラクターを呼び出します。 baseキーワードを使用して同様のことを行い、派生元のクラスのコンストラクターを呼び出すことができます。
いいえ。これにより、新しいコンストラクターの本体を実行する前に、既存のコンストラクターのオーバーロード(2つのパラメーターを持つもの)を実行できます。
これは、複数のコンストラクターオーバーロードでコンストラクターコードを再利用する最も簡単な方法です。
コードは、現在のコンストラクターの本体が実行される前に、指定された引数を使用して実行するように他のコンストラクターに指示しています。
コンストラクタチェーン引数。基本型のコンストラクターへの呼び出しを連鎖させるための「:base()」もあります。