В строке
colour = theColour;
компилятор не может сказать, что вы имеете в виду. Это может быть либо
private string colour;
или это может быть
public string colour { get; set }
Для неоднозначность выбора другой именовании помогает. Например, вы можете выбрать, что свойства имеют прописную первую букву, а поля начинаются с символа подчеркивания и строчной буквы. В этом случае ваш класс будет выглядеть следующим образом:
class Dog
{
private int _weight;
private string _colour;
public string Colour { get; set; }
public Dog(int theWeight, string theColour)
{
_weight = theWeight;
_colour = theColour;
}
}
Примечание, однако, что вы, вероятно, дублирования здесь в любом случае. Скорее всего, это не ваше намерение иметь как автоматическое свойство Color, так и поле _colour в первую очередь.
Вы также можете выбрать инструмент, который поможет вам следовать рекомендованным рекомендациям. В качестве примера можно посмотреть FxCop. Неправильно или неправильно, но, безусловно, легче работать с общепринятыми правилами. (По общему признанию, мое предложение использовать символы подчеркивания для полей не соответствует общепринятому. Однако я не использую общедоступные поля.)
Что происходит, когда вы используете верхний регистр «C» для свойства Color? –