class不包含带0参数的构造函数

时间:2016-04-17 05:29:41

标签: c# constructor

因为我正在尝试创建新的myshape,但是有一个问题发生了,因为标题提到,我对这个问题进行了重新研究,但我不知道如何在我的情况下修复它。这是我的班级代码

onpopstate

以及我在主要方面的表现

 public class Shape
    {
    private Color _color;
    private float _x, _y;
    private int _width, _height;
    private Point2D pt;

    public Shape(Color colors, float x, float y, int Width, int Height)
    {
        _color = colors;
        _x = x;
        _y = y;
        _width = Width;
        _height = Height;

        x = 0;
        y = 0;
        Width = 100;
        Height = 100;
        colors = Color.Green;
    }

,错误是" Mygame.shapes"不包含带0参数的构造函数。

感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

您的Shape类只包含一个接受5个参数的构造函数:
public Shape(Color colors, float x, float y, int Width, int Height)

因此要么使用适当的参数从Main中明确调用它,例如:

public static void Main()
{
    Shape myShape = new Shape(Color.Green, x: 0, y: 0, Width: 10, Height: 10);

或者添加一个设置默认值的新构造函数:

public Shape()
{
    _color = Color.Green;
    _x = 0;
    _y = 0;
    _width = 100;
    _height = 100;
}

答案 1 :(得分:1)

如果您不想指定参数,则应在构造函数定义中提供默认值。

Optional variable-type variable-name=variable-value.

请参阅https://msdn.microsoft.com/en-us/library/dd264739.aspx

如果未提供默认值,则必须在创建对象时指定它们。

或者像其他人所显示的那样定义一个参数less constructor。

答案 2 :(得分:0)

创建类时,可以定义0,1或多个构造函数。每个人都必须有不同的签名。

如果您没有在类中定义构造函数,则在场景后面定义默认构造函数。这允许您通过编写(在您的示例中):

来创建此类的实例
Shape myShape = new Shape();

如果在类中定义构造函数,则在创建此类的新实例后,必须遵循此构造函数的签名,因为默认构造函数现在已经消失了#34;。 这意味着在你的情况下,你有一个带有5个参数的构造函数,所以你必须在创建一个新的Shape实例后调用它:

Shape myShape = new Shape( [ all the 5 parameters]);

如果您仍然希望构造实例而不传递任何参数,则必须明确添加空构造函数,因为您定义了其他构造函数。

因此,在您的情况下,您有两个选项:

1.添加一个空构造函数(除现有构造函数外):

public Shape()
{
    // here you will need to init your members with some default values        
}

2.通过调用带有5个参数的构造函数来创建实例