-1

我有一个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

}

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

Block myBlock = new Block(10, 15);
4

2 回答 2

11

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

你可以有一个链式构造函数Block

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

在这种情况下:

Block myBlock = new Block(10, 15);

会工作得很好。

于 2013-01-08T12:38:04.910 回答
2

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

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

于 2013-01-08T12:47:13.783 回答