因为我正在尝试创建新的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参数的构造函数。
感谢任何帮助。
答案 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个参数的构造函数来创建实例