ラインで
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を見てください。正しいか間違っているかということはありませんが、一般的に受け入れられているルールを使用する方が確かに簡単です。(確かに、フィールドにアンダースコアを使用するという私の提案は、一般的に受け入れられているものと一致していません。ただし、パブリック フィールドは使用しません。)