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个参数的构造函数。由于它与空构造函数一起工作,我认为它将调用基类的构造函数,因此对此有疑问