39

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


    }
}
4

7 に答える 7

55

それは(キーワードとともにthis)コンストラクターに、それ自体が実行される前に同じ型内の別のコンストラクターを呼び出すように指示しています。

したがって:

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

効果的に次のようになります。

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

基本クラスでコンストラクターを呼び出すようにコンストラクターに指示するbase代わりに、を使用できることに注意してください。this

于 2009-07-01T20:19:20.387 に答える
13

これはコンストラクターの連鎖であるため、後続の: this呼び出しを持つコンストラクターは、署名に一致する ctor に連鎖します。

したがって、この例では

public ListNode(object dataValue)

呼んでいる

public ListNode(object dataValue, ListNode nextNode)

2番目のパラメータとしてnullを使用: this(dataValue, null)

コロンを介して呼び出された ctor は、オブジェクトを初期化するために呼び出された ctor の前に実行されることにも注意してください。

于 2009-07-01T20:19:15.833 に答える
9

これは、本体を実行する前に、オブジェクトと ListNode パラメーターを指定してコンストラクターを実行することを意味します。

于 2009-07-01T20:19:38.467 に答える
6

他の ListNode コンストラクターを呼び出します。base キーワードを使用して同様のことを行い、派生元のクラスのコンストラクターを呼び出すことができます。

于 2009-07-01T20:19:48.390 に答える
4

いいえ、これにより、新しいコンストラクターの本体を実行する前に、既存のコンストラクター オーバーロード (2 つのパラメーターを持つもの) を実行できます。

これは、複数のコンストラクター オーバーロードでコンストラクター コードを再利用する最も簡単な方法です。

于 2009-07-01T20:20:00.107 に答える
2

コードは、現在のコンストラクターの本体が実行される前に、指定された引数で実行するように他のコンストラクターに指示しています。

于 2009-07-01T20:24:22.483 に答える
2

コンストラクター チェーンの引数。ベース型のコンストラクターへの呼び出しをチェーンするための ":base()" もあります。

于 2009-07-01T20:48:50.780 に答える