C# 这个语法有效吗?

C# 这个语法有效吗?,c#,syntax,C#,Syntax,我在C#中有一个类,它有两个构造函数 public class GObject { public GObject(){ // The default constructor } public GObject(int xPos, int yPos){ // Second constructor } } 这样写一个子类块有效吗 public class Block : GObject { // Sub class me

我在
C#
中有一个类,它有两个构造函数

public class GObject {

    public GObject(){
        // The default constructor
    }

    public GObject(int xPos, int yPos){
        // Second constructor
    }

}
这样写一个子类
有效吗

public class Block : GObject {

    // Sub class methods go here, no special constructor

}
并用第二个构造函数实例化

Block myBlock = new Block(10, 15);

由于没有在
上定义双参数构造函数,因此无法编写最后一行-它将不会编译

您可以在
上使用链式构造函数:

public Block(int xPos, int yPos) : base(xPos, yPos)
{}
在这种情况下:

Block myBlock = new Block(10, 15);

如果不显式地编写构造函数,则默认情况下可以正常工作。

;编译器创建一个没有参数的默认构造函数


在您的例子中,由于
没有定义任何构造函数,因此只创建无参数构造函数。因此,不能使用两个参数创建
对象。

无效。你试过编译这段代码吗?您将得到一个错误:“XYZ.Block”不包含接受2个参数的构造函数。由于它与空构造函数一起工作,我认为它将调用基类的构造函数,因此对此有疑问