这种语法有效吗?

时间:2013-01-08 12:23:49

标签: c# syntax

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

public class GObject {

    public GObject(){
        // The default constructor
    }

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

}

这样写一个子类Block是否有效?

public class Block : GObject {

    // Sub class methods go here, no special constructor

}

使用2 nd 构造函数实例化Block

Block myBlock = new Block(10, 15);

2 个答案:

答案 0 :(得分:11)

由于您没有在Block上定义两个参数构造函数,因此您无法编写最后一行 - 它将无法编译。

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

public Block(int xPos, int yPos) : base(xPos, yPos)
{}

其中,案例:

Block myBlock = new Block(10, 15);

工作得很好。

答案 1 :(得分:2)

默认情况下,如果您没有显式编写构造函数;编译器创建一个没有参数的默认构造函数。

在您的情况下,由于Block没有定义任何构造函数,因此只创建无参数构造函数。因此,您无法使用两个参数创建Block对象。