这个冒号(:)是什么意思?
在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
关键字一起)指示构造函数在本身执行之前调用同一types中的另一个构造函数。
因此:
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)
还值得注意的是,通过冒号调用的ctor在调用初始化对象的ctor之前执行。
这意味着在运行正文之前,使用object和ListNode参数运行构造函数。
它调用另一个ListNode构造函数。 你可以用base关键字来做一个类似的事情来调用你从中派生出来的类的构造函数。
不,这使您可以在执行新的构造函数的主体之前执行现有的构造函数重载(带有两个参数的构造函数)。
这是在多个构造函数重载中重用构造函数代码的最简单方法。
构造器链参数。 还有“:base()”链接到基types的构造函数的调用。
代码告诉其他构造函数在当前构造函数的主体执行之前用提供的参数执行。