2014-01-21 3 views
2

Извините за универсальность названия, я действительно не понимаю ошибку, которую я получаю.Ошибка при построении структуры в C#

Итак, я следую this tutorial on C#, и я до раздела «Структуры & Управление памятью».

Около отметки 5:30 он начинает создавать структуру Color, поэтому я следую за строкой линии. Все это время его код не показывает ошибок.

Мои ошибки

Mine, тем не менее. Четыре из них, чтобы быть точным:

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.R с Color.G & 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, поэтому я Немного смущенно, что именно происходит здесь. Мысли?

ответ

1

Structs может реально использовать конструктор по умолчанию, который будет построен изначально. Измените конструктор для вызова по умолчанию:

public Color(byte red, byte green, byte blue) 
    : this() 
{ 
    this.R = red; 
    this.G = green; 
    this.B = blue; 
} 

Позвонив this вы используете конструктор по умолчанию, а затем установить частные значения на этом конкретном случае. Если бы это был class вместо struct, ваш код работал бы без проблем.

+1

Отлично, спасибо, что помогли. – ReactingToAngularVues

Смежные вопросы