Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 构造函数定义中的冒号是什么?_C#_Terminology - Fatal编程技术网

C# 构造函数定义中的冒号是什么?

C# 构造函数定义中的冒号是什么?,c#,terminology,C#,Terminology,在C#中定义构造函数时,可以使用冒号(如中所示): 这个冒号叫什么?(在不知道它叫什么的情况下阅读它是非常困难的。) 请注意,我问的是构造函数定义中的冒号,而不是类定义中显示继承的冒号。这不是方法定义,而是构造函数定义;冒号用于指定必须在子类的构造函数之前调用的超类构造函数调用 在Java中,使用了super关键字,但它必须是子类构造函数中的第一个操作,而C#使用的语法更接近C++的初始值设定项列表 如果子类“superclass”构造函数没有任何参数,则无需显式调用父构造函数,仅当需要参数时,

在C#中定义构造函数时,可以使用冒号(如中所示):

这个冒号叫什么?(在不知道它叫什么的情况下阅读它是非常困难的。)


请注意,我问的是构造函数定义中的冒号,而不是类定义中显示继承的冒号。

这不是方法定义,而是构造函数定义;冒号用于指定必须在子类的构造函数之前调用的超类构造函数调用

在Java中,使用了
super
关键字,但它必须是子类构造函数中的第一个操作,而C#使用的语法更接近C++的初始值设定项列表

如果子类“superclass”构造函数没有任何参数,则无需显式调用父构造函数,仅当需要参数时,或者如果要调用特定的重载构造函数,则必须使用此语法

爪哇:

C#:

使现代化 C#语言规范5.0-在第10.11.1节“构造函数初始值设定项”中有解释

所有实例构造函数(类
对象
的实例构造函数除外)都隐式地在构造函数体之前调用另一个实例构造函数。隐式调用的构造函数由构造函数初始值设定项确定:

所以这个语法的官方术语

: base(x, y, z) 

…是“构造函数初始值设定项”,但是该规范没有专门调用冒号语法并为其指定自己的名称。作者假设规范本身并不关心这些琐事。

这不是一个方法定义,而是一个构造函数定义;冒号用于指定必须在子类的构造函数之前调用的超类构造函数调用

在Java中,使用了
super
关键字,但它必须是子类构造函数中的第一个操作,而C#使用的语法更接近C++的初始值设定项列表

如果子类“superclass”构造函数没有任何参数,则无需显式调用父构造函数,仅当需要参数时,或者如果要调用特定的重载构造函数,则必须使用此语法

爪哇:

C#:

使现代化 C#语言规范5.0-在第10.11.1节“构造函数初始值设定项”中有解释

所有实例构造函数(类
对象
的实例构造函数除外)都隐式地在构造函数体之前调用另一个实例构造函数。隐式调用的构造函数由构造函数初始值设定项确定:

所以这个语法的官方术语

: base(x, y, z) 

…是“构造函数初始值设定项”,但是该规范没有专门调用冒号语法并为其指定自己的名称。作者假设规范本身并不关心这些琐碎的事情。

它不是一个方法-它是一个构造函数,并且链接到另一个构造函数。(这部分语法被称为构造函数初始值设定项。)@JonSkeet,谢谢,我已经修正了问题中的术语。@JonSkeet,你的评论实际上回答了这个问题。是的,但不够详细,我不愿意将其作为答案发布,我没有足够的时间来详细说明…它不是一个方法-它是一个构造函数,它链接到另一个构造函数。(这部分语法称为构造函数初始值设定项。)@JonSkeet,谢谢,我已经修正了问题中的术语。@JonSkeet,你的评论实际上回答了这个问题。是的,但不够详细,我不愿意将其作为答案发布,而且我没有足够的时间详细说明……如果我错了,请纠正我,但是
c#
并没有称它为
超类
,而是称它为
class@Dai,我问的是冒号的名称,而不是它的作用。如果我错了,请纠正我,但是
c
不称它为
超类,而称它为
base
class@Dai我在问那个冒号叫什么,不是它的功能。
public class Derived : Parent {
    public Derived(String x) : base(x) {
    }
}
: base(x, y, z)