对不起标题的通用性,我真的不明白我收到的错误。
因此,我正在关注C#上的本教程,并且我要掌握" structs& Memory Management"部分。
在5:30大关附近,他开始创建一个Color
结构,因此我跟随,线路进行行。一直以来,他的代码没有显示任何错误。
我的错误
我的确如此。确切地说,其中四个:
1)Error 1: Backing field for automatically implemented property 'Color.R' must be fully assigned before control is returned to the caller. Consider calling the default constructor from a constructor initializer.
错误2&3与1相同,除了用Color.G
替换Color.R
&Color.B
。
最后,错误4:
The 'this' object cannot be used before all of its fields are assigned to.
代码
这是我的颜色结构的代码(同样,我正在努力注意我的代码和教程主代码之间的任何区别):
public struct Color
{
public byte R { get; private set; }
public byte G { get; private set; }
public byte B { get; private set; }
public Color(byte red, byte green, byte blue)
{
R = red;
G = green;
B = blue;
}
public static Color Red
{
get { return new Color(255, 0, 0); }
}
public static Color Green
{
get { return new Color(0, 255, 0); }
}
public static Color Blue
{
get { return new Color(0, 0, 255); }
}
public static Color Black
{
get { return new Color(0, 0, 0); }
}
public static Color White
{
get { return new Color(255, 255, 255); }
}
}
我是C#的新手,但是有一些PHP经验,所以我对这里发生的事情有些困惑。想法?
Structs
只能真正使用最初要构建的默认构造函数。更改构造函数以调用默认值:
public Color(byte red, byte green, byte blue)
: this()
{
this.R = red;
this.G = green;
this.B = blue;
}
通过调用this
,您正在使用默认构造函数,然后在该特定实例上设置私有值。如果这是class
而不是struct
,您的代码将无问题。